//雪花飘落特效 //右上角github跳转   

Windows server 2019 安装k8s node

# **Windows server 2019 安装k8s node**

 

 

目录

[一、K8s集群配置Flannel	](#_Toc31758 )

[二、Windows节点安装docker	](#_Toc22652 )

[三、Windows节点加入k8s集群	](#_Toc22916 )

[四、加入集群后的验证	](#_Toc22057 )

[五、新服务器加入监控	](#_Toc22769 )

[FAQ常见问题总结	](#_Toc16032 )



## 一、**K8s集群配置Flannel**

1.1 配置Iptables规则

【所有linux节点】执行

echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf && sysctl -p 

【所有linux节点】验证

sysctl -a |grep net.bridge.bridge-nf-call-iptables

 

1.2 下载并配置 Linux 版本的 Flannel 【Master节点】

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

 

kubectl edit cm -n kube-system kube-flannel-cfg

 net-conf.json: |

  {

   "Network": "10.245.64.0/18",

   "Backend": {

​    "Type": "vxlan",

​    "VNI": 4096,

​    "Port": 4789

   }

  }
![](https://img2022.cnblogs.com/blog/1221545/202202/1221545-20220215173948094-1370210009.png)


 

1.3 确保Flannel正常运行【Master节点】

kubectl apply -f kube-flannel.yml

kubectl get pods -n kube-system

 

1.4 添加 Windows Flannel 和 kube-proxy DaemonSet 【Master节点】

\#注意替换版本号为当前k8s集群版本

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

 

kubectl apply -f https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-overlay.yml

 

最终结果如下

![](https://img2022.cnblogs.com/blog/1221545/202202/1221545-20220215174003065-2033232502.png)


 

 

 

 

## 二、**Windows节点安装docker**

***\*!!!在以下三种方法选择其中一种安装即可!!!\****

***\*docker完装毕后,服务器需要重启生效,不然服务无法启动\****

 

***\*方法一:\****手动传包安装

2.1 下载离线包 (此处版本指定20.10.8,尽量跟集群内其他节点一致)

[h](https://dockermsft.azureedge.net/dockercontainer/docker-20-10-8.zip)ttps://dockermsft.azureedge.net/dockercontainer/docker-20-10-8.zip

 

2.2 解压到C:\Program Files 下

![](https://img2022.cnblogs.com/blog/1221545/202202/1221545-20220215174124499-1808662457.png)


2.3 增加环境变量

C:\Program Files\docker\

![](https://img2022.cnblogs.com/blog/1221545/202202/1221545-20220215174134150-1742611497.png)


2.4 以管理员身份powershell运行,注册docker为服务

![](https://img2022.cnblogs.com/blog/1221545/202202/1221545-20220215174141217-239592847.png)


cd 'C:\Program Files\docker\'

dockerd --register-service

 

2.5 启动docker (此处启动会失败,需要重启后才行)

Start-Service docker

 

2.6 重启服务器 && 验证

!!注意,重启时一定确认时新加入的windows节点!!

![](https://img2022.cnblogs.com/blog/1221545/202202/1221545-20220215174150244-1233143636.png)


![](https://img2022.cnblogs.com/blog/1221545/202202/1221545-20220215174154739-138016147.png)


 

 

***\*方法二:自定义版本安装\**** 

(注意此方法需要Nuget环境,最好可以联网)

2.1 配置安装源

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

 

2.2 指定版本安装Docker

Install-Package -Name docker -ProviderName DockerMsftProvider -Force -RequiredVersion 20.10.8

 

2.3 重启服务器 -> 配置环境变量 -> 启动服务(参考方法一)

 

 

***\*方法三:最新版本安装\****

2.1 以管理员身份运行

Install-WindowsFeature -Name Containers

 

2.2 重启服务器 -> 配置环境变量 -> 启动服务(参考方法一)

 

 

 

**修改docker镜像存储路径**

1)增加daemon.json

C:\ProgramData\docker\config\daemon.json

```powershell
{
 "registry-mirrors": [],
 "insecure-registries": ["harbor.betawm.com"],
 "graph": "D:\\Docker"
}

2)重启docker服务 & 验证

docker info

三、Windows节点加入k8s集群

3.1 将准备的k.zip安装包解压至C:\k目录下

*!!!注意k.zip安装包内默认k8s组件版本为v1.21.5 !!!*

*预生产k8s集群为v1.20.4,与包内的版本不一致, 所以需要手动下载替换*

下载地址(仅替换这4个即可):

https://dl.k8s.io/v1.20.4/bin/windows/amd64/kubeadm.exe

https://dl.k8s.io/v1.20.4/bin/windows/amd64/kubectl.exe

https://dl.k8s.io/v1.20.4/bin/windows/amd64/kubelet.exe

https://dl.k8s.io/v1.20.4/bin/windows/amd64/kube-proxy.exe

3.2 nssm外网可能下载不到导致卡住,所以直接将nssm这几行注释掉

1)创建目录,NssmInstallDirectory -> 从上边的变量找到是在

C:\Program Files\nssm

2)下载zip包 https://k8stestinfrabinaries.blob.core.windows.net/nssm-mirror/nssm-2.24.zip

3)解压到C:\Program Files\nssm(此目录根据PrepareNode.ps1脚本发现)

4)配置环境变量 C:\Program Files\nssm\win64

3.3 以管理员身份运行powershell 进入C:\k

cd C:\k

.\PrepareNode.ps1 -KubernetesVersion v1.20.4

3.4 创建永不过期的token【Master节点】

kubeadm token create --print-join-command --ttl 0

3.5 加入集群 【新Windows 节点】

kubeadm join xxxxxxx(刚生成的token串)

3.6 此处能看到新Windows节点已加入集群,但正在拉镜像起pod所以状态为NotReady

kubectl get nodes -o wide

可以手动将这些镜像在windows节点pull下来加快速度,kube-proxy-windows这个pod起来就为Ready了

因新加入的为Windows节点较为特殊很多daemonsets的Pod无法同样适用,所以需要手动将其删除(此处暂时不做展示)

四、加入集群后的验证

现在来跑一个服务验证是否正常

beta-message-web

步骤如下:

开发站镜像同步到主站、部署Yaml、Apollo、VirtualService

4.1 harbor中镜像同步到主站


4.2 部署Yaml (注意此nameservers改成此地址)

4.3 Apollo (需按照各环境实际地址来变)

4.4 VirtualService (可直接照搬,需要确认路由前缀)

五、新服务器加入监控

5.1 加入Grafana

【192.168.45.1操作】

cd /opt/prometheus/prometheus-2.28.1/

cp prometheus.yml prometheus.yml.date "+%Y%m%d_%H%M.bak"

vim prometheus.yml

增加红线部分

systemctl restart prometheus

【新Windows节点】

部署windows_exporter

5.2 加入Zabbix (根据环境来定)

1)在windows机器上双击zabbix_agent2工具包下一步安装即可

(包名:zabbix_agent2-5.0.15-windows-amd64-openssl.msi)

2)更改zabbix_agent2.conf配置,只需要把hostname改为本机ip即可

Hostname=172.16.0.22

默认安装路径C:\Program Files\Zabbix Agent 2

FAQ

*问题1、Docker无法启动*

*解决办法:*重启服务器,首次安装Docker需要重启服务器才可生效

1)fatal: open D:\Docker\panic.log: Access is denied.

2)fatal: failed to start daemon: failed to load vmcompute.dll, ensure that the Containers feature is installed

*问题2、windows加入k8s集群卡住*

*解决办法:*nssm外网可能下载不到导致卡住,所以直接将nssm这几行注释掉,手动执行

1)创建目录 (从脚本中找关键字NssmInstallDirectory找到)

C:\Program Files\nssm

2)下载zip包 https://k8stestinfrabinaries.blob.core.windows.net/nssm-mirror/nssm-2.24.zip

3)解压到C:\Program Files\nssm(此目录根据PrepareNode.ps1脚本发现)

4)配置环境变量 C:\Program Files\nssm\win64

*问题3、windows节点加入集群的时候失败,kubelet无法启动*

*解决方法:*手动替换k目录里kubelet和kube-proxy版本,与刚开始定义的版本保持一致

kubelet无法启动截图

调试时,发现kubelet的真正原因

kubelet真正的启动命令,调试时可以使用

C:\k\kubelet.exe \(global:KubeletArgs --cert-dir=\)env:SYSTEMDRIVE\var\lib\kubelet\pki --config=/var/lib/kubelet/config.yaml --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --hostname-override=$(hostname) --pod-infra-container-image="mcr.microsoft.com/oss/kubernetes/pause:1.4.1" --enable-debugging-handlers --cgroups-per-qos=false --enforce-node-allocatable="" --network-plugin=cni --resolv-conf="" --log-dir=/var/log/kubelet --logtostderr=false --image-pull-progress-deadline=20m

*问题4、*新Windows节点处于NotReady状态,很可能是因为系统仍在下载 Flannel镜像

*解决办法:*可以手动pull镜像或者镜像打包传到新Windows节点

kubectl -n kube-system get pods -l app=flannel

posted @ 2022-02-15 17:46  农夫运维  阅读(1027)  评论(0)    收藏  举报