添加 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
.
获取 Windows Server 2019 或更高版本的授权 以便配置托管 Windows 容器的 Windows 节点。 如果你在使用 VXLAN/覆盖(Overlay)联网设施,则你还必须安装 。
一个利用 kubeadm 创建的基于 Linux 的 Kubernetes 集群;你能访问该集群的控制面 (参见使用 kubeadm 创建一个单控制面的集群)。
- 配置网络,以便 Linux 和 Windows 上的 Pod 和 Service 之间能够相互通信。
一旦你有了一个基于 Linux 的 Kubernetes 控制面节点,你就可以为其选择联网方案。 出于简单考虑,本指南展示如何使用 VXLAN 模式的 Flannel。
配置 Flannel
为 Flannel 准备 Kubernetes 的控制面
在我们的集群中,建议对 Kubernetes 的控制面进行少许准备处理。 建议在使用 Flannel 时为 iptables 链启用桥接方式的 IPv4 流处理, 必须在所有 Linux 节点上执行如下命令:
下载并配置 Linux 版本的 Flannel
下载最新的 Flannel 清单文件:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
修改 Flannel 清单中的
net-conf.json
部分,将 VNI 设置为 4096,并将 Port 设置为 4789。 结果看起来像下面这样:net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan",
"VNI": 4096,
"Port": 4789
}
}
Note: 在 Linux 节点上 VNI 必须设置为 4096,端口必须设置为 4789,这样才能令其与 Windows 上的 Flannel 互操作。关于这些字段的详细说明,请参见 VXLAN 文档。
应用 Flannel 清单并验证
首先应用 Flannel 配置:
kubectl apply -f kube-flannel.yml
几分钟之后,如果 Flannel Pod 网络被正确部署,你应该会看到所有 Pods 都处于运行中状态。
kubectl get pods -n kube-system
输出中应该包含处于运行中状态的 Linux Flannel DaemonSet:
加入 Windows 工作节点
Note:
安装 Docker EE
Install-WindowsFeature -Name containers
安装 Docker 操作指南在 。
安装 wins、kubelet 和 kubeadm
运行 kubeadm
添加节点
当你在控制面主机上运行 kubeadm init
时,输出了一个命令。现在运行这个命令。 如果你找不到这个命令,或者命令中对应的令牌已经过期,你可以(在一个控制面主机上)运行 kubeadm token create --print-join-command
来生成新的令牌和 join 命令。
安装 containerD
.\Install-Containerd.ps1
Note:
要安装特定版本的 containerD,使用参数 -ContainerDVersion指定版本。
# Example
.\Install-Containerd.ps1 -ContainerDVersion 1.4.1
Note:
如果你在 Windows 节点上使用了与 Ethernet 不同的接口(例如 “Ethernet0 2”),使用参数 -netAdapterName
指定名称。
# Example
.\Install-Containerd.ps1 -netAdapterName "Ethernet0 2"
安装 wins,kubelet 和 kubeadm
curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/kubeadm/scripts/PrepareNode.ps1
.\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 运行起来,你的节点就应该能进入 状态并可 用来处理负载。