Windows加入Kubernetes集群(kubeadm)

环境

  • 系统:Windows Server 2019 Standard(带桌面的)
  • 集群:CentOS 7 Master

没桌面的Core Server无法安装Kubernetes,但可以安装Docker

基础配置

# 配置网络
netsh interface ipv4 show interfaces

netsh interface ipv4 set address name="Ethernet0" source=static addr=172.16.22.105 mask=255.255.255.0 gateway=172.16.22.1

netsh interface ipv4 set dns name="Ethernet0" source=static addr=114.114.114.114 register=primary

# 配置计算机名字
netdom renamecomputer OLD-HOSTNAME /newname:NEW-HOSTNAME

# 开启3389
cscript %windir%\system32\scregedit.wsf /ar 0
cscript %windir%\system32\scregedit.wsf /cs 0

# 关闭防火墙
netsh advfirewall set allprofiles state off

# 使用系统自带更新,更新完毕重启

支持容器

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Restart-Computer -Force
docker info

配置docker镜像加速

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

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

{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn"
    ]
}
Restart-Service docker

修改master配置

# 修改原有Flannel网络配置
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 修改 kube-flannel.yml 中的 net-conf.json 部分,将 VNI 设置为 4096,并将 Port 设置为 4789
# Network用你自己原本的,172.19.0.0/16是我集群中的配置。

# net-conf.json: |
#     {
#       "Network": "172.19.0.0/16",
#       "Backend": {
#          "Type": "vxlan",
#          "VNI" : 4096,
#          "Port": 4789
#     }
# }

kubectl delete -f kube-flannel.yml
kubectl apply -f kube-flannel.yml

# 添加 Windows Flannel 和 kube-proxy DaemonSet
curl -L https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/kube-proxy.yml | sed 's/VERSION/v1.19.4/g' | kubectl apply -f -

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

下载必须的文件

# 自动初始化Windows 下 kubernetes 的脚本
https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/PrepareNode.ps1

# https://github.com/kubernetes/kubernetes/releases 中 CHANGELOG
# 下载 Windows 版 kubernetes node
# 最好和集群的版本一致,我的集群是v1.19.4
# 在 kubernetes\node\bin\ 中取出 kubeadm.exe 和 kubelet.exe
https://dl.k8s.io/v1.19.4/kubernetes-node-windows-amd64.tar.gz


https://k8stestinfrabinaries.blob.core.windows.net/nssm-mirror/nssm-2.24.zip

https://github.com/Microsoft/SDN/raw/master/Kubernetes/windows/hns.psm1

https://github.com/rancher/wins/releases/download/v0.0.4/wins.exe

修改下载的ps1文件

将PrepareNode.ps1中 DownloadFile 函数调用的代码全部注释“#”,因为上面已经下载了这些文件。

将nssm-2.24.zip改为nssm.zip。

在Windows服务器中创建新目录C:\k,将hns.psm1、kubeadm.exe、kubelet.exe、nssm.zip、wins.exe和PrepareNode.ps1都放入其中。

安装windows下kubernetes

powershell命令行执行kubeadm.exe version查看版本号。(v1.19.4)

执行.\PrepareNode.ps1 -KubernetesVersion v1.19.4 初始化Windows下kubernetes

如果执行失败了,删除C盘根目录下etc、run、var和opt(这几个目录,有就删掉),
重新复制nssm-2.24.zip改为nssm.zip,
检查执行的错误并解决,再重新执行。

在master上使用 kubeadm token create --print-join-command 生成新的tocken

在Windows服务器上执行刚刚linux生成新tocken的回显,类似以下命令  
kubeadm join 172.16.22.101:6443 --token lzxi5w.qizoch3pqcbc3ozc     --discovery-token-ca-cert-hash sha256:02d821acf1b0595943cb046a44356b68a85feb74e920b635713afc1fb732183f

Windows的docker会自动pull几个镜像,可能会比较慢
kubectl get node -o wide
# NAME           STATUS   ROLES    AGE    VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                       KERNEL-VERSION               CONTAINER-RUNTIME
# k8s-master01   Ready    master   1d    v1.19.4   172.16.22.101   <none>        CentOS Linux 7 (Core)          5.9.11-1.el7.elrepo.x86_64   docker://19.3.13
# k8s-node01     Ready    <none>   1d    v1.19.4   172.16.22.103   <none>        CentOS Linux 7 (Core)          5.9.11-1.el7.elrepo.x86_64   docker://19.3.13
# k8s-node02     Ready    <none>   1d    v1.19.4   172.16.22.104   <none>        CentOS Linux 7 (Core)          5.9.11-1.el7.elrepo.x86_64   docker://19.3.13
# k8s-node03     Ready    <none>   4m5s   v1.19.4   172.16.22.105   <none>        Windows Server 2019 Standard   10.0.17763.1637              docker://19.3.14


kubectl -n kube-system get all -o wide | grep node03
# pod/kube-flannel-ds-windows-amd64-78c79    1/1     Running            1          7m19s   172.16.22.105   k8s-node03     <none>           <none>
# pod/kube-proxy-windows-vghgw               1/1     Running            0          7m19s   172.19.5.2      k8s-node03     <none>           <none>
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值