添加 Windows 节点

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

    Your Kubernetes server must be at or later than version 1.17. To check the version, enter kubectl version.

    • 配置网络,以便 Linux 和 Windows 上的 Pod 和 Service 之间能够相互通信。

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

    配置 Flannel

    1. 为 Flannel 准备 Kubernetes 的控制面

      在我们的集群中,建议对 Kubernetes 的控制面进行少许准备处理。 建议在使用 Flannel 时为 iptables 链启用桥接方式的 IPv4 流处理, 必须在所有 Linux 节点上执行如下命令:

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

      下载最新的 Flannel 清单文件:

      1. wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

      修改 Flannel 清单中的 net-conf.json 部分,将 VNI 设置为 4096,并将 Port 设置为 4789。 结果看起来像下面这样:

      1. net-conf.json: |
      2. {
      3. "Network": "10.244.0.0/16",
      4. "Backend": {
      5. "Type": "vxlan",
      6. "VNI": 4096,
      7. "Port": 4789
      8. }
      9. }

      Note: 在 Linux 节点上 VNI 必须设置为 4096,端口必须设置为 4789,这样才能令其与 Windows 上的 Flannel 互操作。关于这些字段的详细说明,请参见 VXLAN 文档

    3. 应用 Flannel 清单并验证

      首先应用 Flannel 配置:

      1. kubectl apply -f kube-flannel.yml

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

      1. kubectl get pods -n kube-system

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

    加入 Windows 工作节点

    Note:

    安装 Docker EE

    1. Install-WindowsFeature -Name containers

    安装 Docker 操作指南在 。

    安装 wins、kubelet 和 kubeadm

    运行 kubeadm 添加节点

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

    安装 containerD

    1. .\Install-Containerd.ps1

    Note:

    要安装特定版本的 containerD,使用参数 -ContainerDVersion指定版本。

    1. # Example
    2. .\Install-Containerd.ps1 -ContainerDVersion 1.4.1

    Note:

    如果你在 Windows 节点上使用了与 Ethernet 不同的接口(例如 “Ethernet0 2”),使用参数 -netAdapterName 指定名称。

    1. # Example
    2. .\Install-Containerd.ps1 -netAdapterName "Ethernet0 2"

    安装 wins,kubelet 和 kubeadm

    1. curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/kubeadm/scripts/PrepareNode.ps1
    2. .\PrepareNode.ps1 -KubernetesVersion v1.23.6 -ContainerRuntime containerD

    运行 kubeadm 添加节点

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

    Note: If using CRI-containerD add --cri-socket "npipe:////./pipe/containerd-containerd" to the kubeadm call

    检查你的安装

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

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

      一旦 Flannel Pod 运行起来,你的节点就应该能进入 状态并可 用来处理负载。