Windows节点加入K8S集群(K8S搭建Linux和Window混合集群)
2021-05-15 17:27
标签:status color Kubernete 验证 shel src 概率 步骤 tin Windows节点加入K8S集群(K8S搭建Linux和Window混合集群) 说明:K8S多数情况用于linux系统的集群,目前很少人实践linux 和 windows 的混合集群。linux 和 windows 的K8S混合集群,是以linux 为Master节点,Windows 为 Node节点的。本示例linux 采用centos7.6,windows 采用 windows server 2019(均为虚拟机)。 1.熟悉linux 的基本使用,熟悉linux 下的K8S集群 2.CentOS7.6:安装好docker并配置镜像加速,K8S,并且授予K8S集群的master 角色(主机要求 cpu 内核2个以上,内存2G以上)。 3.Windows server 2019:cpu 内核2个以上,内存2G以上。并且安装好docke,配置镜像加速。 4.Windows server 2019 要安装最新的补丁,至少要安装 KB4489899 补丁(补丁下载见底部链接)。 5.时间同步:centos的master 主机和 windows server 2019的node 主机时间必须同步,可设置同步时间服务器(方法详见底部连接) 建议在使用 Flannel 时为 iptables 链启用桥接方式的 IPv4 流处理。 注意:raw.githubusercontent.com 在国内大概率会被GFW 墙掉,可以手动执行命令 下载后,需要将文件kube-flannel.yml 中的 只有将linux上的 vni 设置成4096,port 设置成4789;才能与windows 上的flannel 实现通信,进而互操作。 应用flannel 配置后,docker会从官网或配置的加速器中(最好是配置docker 加速器)下载flannel相关的镜像且运行相关的pod。这个过程需要时间,几分钟后,执行 4.1 proxy:这里我的版本是 v1.20.0。需要根据自己的版本进行修改。 4.2.flannel: 前提是在windows server 2019 中已经安装了docker 且配置了镜像加速。且具有管理员权限。 可以根据自己的需要选择对应的版本。 1.2 执行命令,运行PrepareNode.ps1文件,下载并安装 wins,kubelet,kubeadm 注意:执行上面第一条命令下载PrepareNode.ps1文件,可能会非常慢;即使下载文件后,根据文件下载wins、kubelet、kubeadm 可能会非常卡顿。由于上述情况的存在,大概率导致安装不成功,建议采用手动安装,步骤如下: 第一步,PrepareNode.ps1 文件下载: 打开浏览器,输入网址 https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/PrepareNode.ps1 下载文件,文件下载后,将DownloadFile 函数调用的代码全部用“#”注释 第二步、wins,kubelet,kubeadm 安装文件下载:根据下载的PrepareNode.ps1文件中的DownloadFile 函数,下载安装文件。 1.浏览器输入 https://dl.k8s.io/v1.20.0/kubernetes-node-windows-amd64.tar.gz,解压下载后的文件,从kubernetes\node\bin\ 中取出 kubeadm.exe 和 kubelet.exe(根据自己需要的版本下载) 2.浏览器输入 https://k8stestinfrabinaries.blob.core.windows.net/nssm-mirror/nssm-2.24.zip,下载zip 文件,并重命名为 nssm.zip。 3.浏览器输入 https://github.com/Microsoft/SDN/raw/master/Kubernetes/windows/hns.psm1 ,下载psm1文件 4.浏览器输入 https://github.com/rancher/wins/releases/download/v0.0.4/wins.exe,下载wins.exe 文件 第三步、安装windows下的kubernetes。 1.在c盘根目录创建文件夹k,并将第一步,第二步的文件 hns.psm1、kubeadm.exe、kubelet.exe、nssm.zip、wins.exe和PrepareNode.ps1 全部放进文件夹k中。 2.在目录k中,管理员权限 powershell 执行命令初始化windows 下的kubernetes:根据自己的版本来执行。 如果执行失败,删除C盘根目录下etc、run、var、opt和k(这几个目录有就删掉), 重新复制nssm-2.24.zip改为nssm.zip, 检查执行的错误并解决,再重新执行。如果是运行不成功,想要卸载,则参考后面的卸载步骤。 这时候,windows docker 会下载几个镜像,会比较慢,需要等待一段时间(内网环境下,需要将镜像手动导入)。 如果windows node 处于not ready 状况,可能是windows docker 还在下载相关的镜像,可通过 windows 有时候不一定一次就能安装成功,这时候又已经安装了一些服务了,就需要K8S进行彻底的卸载。 1.1 master 节点删除该node。 1.2 windows 脱离节点。 1.3 在计算机服务中,找到kubelet 服务和 Rancher wins,将其停止。 1.4 管理员权限 cmd 删除服务: Windows节点加入K8S集群(K8S搭建Linux和Window混合集群) 标签:status color Kubernete 验证 shel src 概率 步骤 tin 原文地址:https://www.cnblogs.com/Fengyinyong/p/14701996.html一、前提准备
二、Windows加入集群
(一) 、Master 配置 (在centos 上执行)
1.master 启用网络桥接方式
sudo sysctl net.bridge.bridge-nf-call-iptables=1
2.下载flannel 和配置 linux Flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
vi /etc/hosts
配置hosts :199.232.28.133 raw.githubusercontent.comnet-conf.json
部分,将 VNI 设置为 4096,并将 Port 设置为 4789。如下所示:net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan",
"VNI": 4096,
"Port": 4789
}
}
3. 应用Linux 的 flannel 配置并验证
kubectl apply -f kube-flannel.yml
kubectl get pods -n kube-system
查看组件运行情况NAMESPACE NAME READY STATUS RESTARTS AGE
...
kube-system kube-flannel-ds-54954 1/1 Running 0 1m
4.linux配置Windows 兼容版本的 proxy 和 flannel:
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 -
#也可以使用 wget 命令将kube-proxy.yaml命令先下载下来,再执行sed 和 kube apply 命令。
kubectl apply -f https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-overlay.yml
#建议先用 wget 命令将flannel-overlay,再执行kubectl apply
(二)、配置windows server 2019
1.安装windows 的wins,kubelet,kubeadm。
1.1 powershell 可执行文件PrepareNode.ps1下载:curl.exe -LO https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/PrepareNode.ps1
.\PrepareNode.ps1 -KubernetesVersion v1.20.0
.\PrepareNode.ps1 -KubernetesVersion v1.20.0
(三)、Windows 加入集群
1.master上执行命令查看加入集群的指令。
kubeadm token create --print-join-command
2.在windows 上,执行master上回显的指令。指令类似于:
kubeadm join 172.16.22.101:6443 --token lzxi5w.qizoch3pqcbc3ozc --discovery-token-ca-cert-hash sha256:02d821acf1b0595943cb046a44356b68a85feb74e920b635713afc1fb732183f
3.在master 上查看集群的状态:
kubectl get nodes -o wide
kubectl -n kube-system get pods -l app=flannel
查看flannel pod的运行情况。也可以通过 kubectl describe pod podname -n namespaces
,根据具体的pod和名称空间查看flannel的具体情况,以此来分析原因。三、Windows K8S的卸载
kubectl delete node nodename
kubeadm reset
sc delete kubelet
,`sc delete rancher-wins
文章标题:Windows节点加入K8S集群(K8S搭建Linux和Window混合集群)
文章链接:http://soscw.com/index.php/essay/85881.html