添加 Windows 节点

    你可以使用 Kubernetes 来混合运行 Linux 和 Windows 节点,这样你就可以 混合使用运行于 Linux 上的 Pod 和运行于 Windows 上的 Pod。 本页面展示如何将 Windows 节点注册到你的集群。

    您的 Kubernetes 服务器版本必须不低于版本 1.17. 要获知版本信息,请输入 kubectl version.

    • 获取 以便配置托管 Windows 容器的 Windows 节点。 如果你在使用 VXLAN/覆盖(Overlay)联网设施,则你还必须安装 KB4489899

    • 一个利用 kubeadm 创建的基于 Linux 的 Kubernetes 集群;你能访问该集群的控制面 (参见)。

    • 将一个 Windows 节点注册到集群上
    • 配置网络,以便 Linux 和 Windows 上的 Pod 和 Service 之间能够相互通信。

    一旦你有了一个基于 Linux 的 Kubernetes 控制面节点,你就可以为其选择联网方案。 出于简单考虑,本指南展示如何使用 VXLAN 模式的 Flannel。

    配置 Flannel

    1. 下载并配置 Linux 版本的 Flannel

      下载最新的 Flannel 清单文件:

      1. wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
      1. net-conf.json: |
      2. {
      3. "Network": "10.244.0.0/16",
      4. "Backend": {
      5. "Type": "vxlan",
      6. "VNI" : 4096,
      7. "Port": 4789
      8. }
    2. 应用 Flannel 清单并验证

      首先应用 Flannel 配置:

        几分钟之后,如果 Flannel Pod 网络被正确部署,你应该会看到所有 Pods 都处于运行中状态。

        输出中应该包含处于运行中状态的 Linux Flannel DaemonSet:

        1. NAMESPACE NAME READY STATUS RESTARTS AGE
        2. ...
        3. kube-system kube-flannel-ds-54954 1/1 Running 0 1m
      1. 添加 Windows Flannel 和 kube-proxy DaemonSet

        现在你可以添加 Windows 兼容版本的 Flannel 和 kube-proxy。为了确保你能获得兼容 版本的 kube-proxy,你需要替换镜像中的标签。 下面的例子中展示的是针对 Kubernetes v1.20.0 版本的用法, 不过你应该根据你自己的集群部署调整其中的版本号。

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

        说明: 如果你在使用 host-gateway 模式,则应该使用 https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-host-gw.yml 这一清单。

        如果你在 Windows 节点上使用的不是以太网(即,”Ethernet0 2”)接口,你需要 修改 flannel-host-gw.yml 或 文件中的下面这行:

        1. wins cli process run --path /k/flannel/setup.exe --args "--mode=overlay --interface=Ethernet"

        在其中根据情况设置要使用的网络接口。

      加入 Windows 工作节点 {joining-a-windows-worker-node}

      你必须安装 Containers 功能特性并安装 Docker 工具。相关的指令可以在 处找到。

      Windows 节的所有代码片段都需要在 PowerShell 环境中执行,并且要求在 Windows 工作节点上具有提升的权限(Administrator)。

      1. 安装 wins、kubelet 和 kubeadm

        1. curl.exe -LO https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/PrepareNode.ps1
        2. .\PrepareNode.ps1 -KubernetesVersion v1.20.0
      2. 运行 kubeadm 添加节点

        当你在控制面主机上运行 kubeadm init 时,输出了一个命令。现在运行这个命令。 如果你找不到这个命令,或者命令中对应的令牌已经过期,你可以(在一个控制面主机上)运行 kubeadm token create --print-join-command 来生成新的令牌和 join 命令。

      检查你的安装

      你现在应该能够通过运行下面的命令来查看集群中的 Windows 节点了:

      1. kubectl get nodes -o wide

      如果你的新节点处于 NotReady 状态,很可能的原因是系统仍在下载 Flannel 镜像。 你可以像之前一样,通过检查 kube-system 名字空间中的 Flannel Pods 来了解 安装进度。