zoukankan      html  css  js  c++  java
  • 部署kubernetes v1.18的windows 节点

    一些限制

    1. k8s中,master节点必须部署在linux节点上,windows节点只能以工作结点的方式加入集群
    2. windows节点系统需要windows server 2016(1703)以上
    3. windows节点系统内核版本和window容器的操作系统内核版本需要匹配(17xx 版本需要大小版本都匹配 18xx 19xx 只要大版本匹配就可以)才能使用进程隔离,节点大于容器时只能使用内核隔离,不能小于
    4. kubernters 本版需要1.14以上,但是用1.17之后更好,因为这个版本之后node有自动加上lable,标识这个节点的操作系统类型和版本号,有利于部署
    5. 需要给windows server 2019打补丁kb4489899

    准备flannel网络

    在文档01中我们已经下载了flannel.yaml
    我们先将它备份一下

    cp flannel.yaml flannel_backup.yaml
    

    然后 修改flannel.yaml里的net-conf.json

      net-conf.json: |
        {
          "Network": "10.244.0.0/16",
          "Backend": {
            "Type": "vxlan"
          }
        }
    

    改为

      net-conf.json: |
        {
          "Network": "10.244.0.0/16",
          "Backend": {
            "Type": "vxlan",
            "VNI" : 4096,
            "Port": 4789
          }
        }
    

    应用flannel配置

    kubectl apply -f flannel.yaml
    

    创建结点选择器flanel补丁

     vim node-selector-patch.yml
    
    spec:
      template:
        spec:
          nodeSelector:
            kubernetes.io/os: linux
    
    

    查看daemonset

    [root@m1 k8s]# kubectl get ds -A
    NAMESPACE     NAME                            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR              AGE
    kube-system   kube-flannel-ds-amd64           1         1         1       1            1                                      93m
    kube-system   kube-flannel-ds-arm             0         0         0       0            0           <none>                     93m
    kube-system   kube-flannel-ds-arm64           0         0         0       0            0           <none>                     93m
    kube-system   kube-flannel-ds-ppc64le         0         0         0       0            0           <none>                     93m
    kube-system   kube-flannel-ds-s390x           0         0         0       0            0           <none>                     93m
    kube-system   kube-flannel-ds-windows-amd64   1         1         1       1            1           <none>                     53m
    kube-system   kube-proxy                      1         1         1       1            1           kubernetes.io/os=linux     157m
    kube-system   kube-proxy-windows              1         1         1       1            1           kubernetes.io/os=windows   89m
    
    

    打补丁

    kubectl patch -n kube-system ds/kube-flannel-ds-amd64 --patch "$(cat node-selector-patch.yml)"
    

    这个时候查看daemonset 看到已经打上linux标签就算成功了

    [root@m1 k8s]# kubectl get ds -A
    NAMESPACE     NAME                            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR              AGE
    kube-system   kube-flannel-ds-amd64           1         1         1       1            1           kubernetes.io/os=linux     93m
    
    

    触类旁通 一通百通, 接下来的windows容器 也要会打window节点选择器补丁,或在写yaml时时候就写进去

    创建一个windows 的工作结点 并加入集群

    打开hyper-v新建一个虚拟机w1,4GB内存,不钩选动态内存,存盘40G,系统盘选择一个下载好的windows server 2019镜像文件,这里不要用中文版本,否则会滑铁卢。。。
    看到安装画面一直下一步,选择数据中心桌面版, 因为纯命令行操作起来比较菜怕操作不来

    之后就是安装画面完成要你设置密码,我设置Abc12345 计算机名改为w1

    ip地址规划到10.7.1.221

    更新补丁

    需要给windows server 2019打补丁kb4489899
    如果补丁打不上也不要惊慌,因为你的系统可能已经有更新的更新了,最好的方法是联网更新一下系统,本文使用1809内核版本。

    导入需要的docker images

    需要的docker images

    PS C:k> docker images
    REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
    sigwindowstools/kube-proxy             v1.18.1             1df35c13f175        4 weeks ago         5.04GB
    microsoft/nanoserver                   latest              716bb79b7dcd        4 weeks ago         251MB
    mcr.microsoft.com/windows/nanoserver   1809                716bb79b7dcd        4 weeks ago         251MB
    sigwindowstools/flannel                0.12.0              9499a92cb176        7 weeks ago         5.06GB
    mcr.microsoft.com/k8s/core/pause       1.2.0               a74290a8271a        10 months ago       253MB
    

    在windows虚拟机中安装docker

    #添加docker repo
    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
    #安装docker
    Install-Package -Name Docker -ProviderName DockerMsftProvider
    
    #如果要安装指定的版本在后面加上可选参数 --MaximumVersiona或RequireVersion
    Install-Package -Name docker -ProviderName DockerMSFTProvider -Force -MaximumVersion 19.03
    Install-Package Docker -ProviderName DockerMSFTProvider -Force -RequiredVersion 19.03
    
    #重启
    Restart-Computer -Force
    
    #重启后看一下docker有无正常工作
    PS C:UsersAdministrator> docker -v
    Docker version 19.03.5, build 2ee0c57608
    

    复制master上的kubeconf到window节点 w1

    在w1上创建 c:k文件夹

    mkdir c:k
    cd c:k
    

    将master的 $HOME/.kube/config复制到w1的c:k

    下载kubernetes的windows二进制


    k8s github 下载地址
    我的集群安装的版本是1.18.1,所以下载的版本要相匹配
    在自己自己电脑上下载下来解压了再用复制过去w1 的c:k
    最终c:k文件夹里要有这些东西

    用powershell把kubernetes二进制文件添加到path

    #临时
    $env:Path += ";C:k"
    #永久(需要管理员权限的powershell)
    [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:k", [EnvironmentVariableTarget]::Machine)
    

    设置环境变量设置kubectl读配置文件

    #临时
    $env:KUBECONFIG="C:kconfig"
    #永久
    [Environment]::SetEnvironmentVariable("KUBECONFIG", "C:kconfig", [EnvironmentVariableTarget]::User)
    #验证
    PS C:k> kubectl config view
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: DATA+OMITTED
        server: https://haoyun.k8s.vip:8443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: kubernetes-admin
      name: kubernetes-admin@kubernetes
    current-context: kubernetes-admin@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: kubernetes-admin
      user:
        client-certificate-data: REDACTED
        client-key-data: REDACTED
    PS C:k>
    #如果错误则要检查一下上面的操作   
    

    在主节点上配置windows的flannel和kube-proxy相关的daemonset

    curl -L https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/kube-proxy.yml | sed 's/VERSION/v1.18.1/g' | kubectl apply -f -
    kubectl apply -f https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-overlay.yml
    

    下载kuberentes官网上的脚本把windows结点加入集群

    下载

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12  
    wget https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/PrepareNode.ps1
    

    修改一下下载来的脚本

    1. windows 1809没有curl,改为wget
    2. 我们前面已经下载了kubernetes二进制,不用重复下载,所以要注释掉
      执行脚本,把windows 节点加入kubernetes集群
    PS C:k> .PrepareNode.ps1 -KubernetesVersion v1.18.1
    

    顺利的话,windows节点就已经加进去了 节点状态应该如下

    [root@m1 k8s]# kubectl get no
    NAME              STATUS   ROLES    AGE    VERSION
    m1                Ready    master   179m   v1.18.1
    w1                Ready    <none>   57m    v1.18.1
    
    

    pod

    [root@m1 k8s]# kubectl get pod -A
    NAMESPACE     NAME                                  READY   STATUS    RESTARTS   AGE
    kube-system   coredns-66bff467f8-7mc92              1/1     Running   0          3h
    kube-system   coredns-66bff467f8-sr6vs              1/1     Running   0          3h
    kube-system   etcd-m1                               1/1     Running   1          3h
    kube-system   kube-apiserver-m1                     1/1     Running   3          3h
    kube-system   kube-controller-manager-m1            1/1     Running   2          3h
    kube-system   kube-flannel-ds-amd64-z5w4j           1/1     Running   0          113m
    kube-system   kube-flannel-ds-windows-amd64-fg4zr   1/1     Running   0          57m
    kube-system   kube-proxy-s8sn8                      1/1     Running   1          3h
    kube-system   kube-proxy-windows-htp85              1/1     Running   0          57m
    kube-system   kube-scheduler-m1                     1/1     Running   3          3h
    
    
  • 相关阅读:
    http请求需要了解的一些信息
    mac修改终端配色方案
    SpringBoot之使用Redisson实现分布式锁
    https://coding.m.imooc.com/classindex.html?cid=402
    构建微电影
    一个开源的后台管理项目
    mysql
    redis安装
    maven 安装
    Django2.1集成xadmin管理后台所遇到的错误集锦,解决填坑
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/12942129.html
Copyright © 2011-2022 走看看