Windows节点加入K8S集群(K8S搭建Linux和Window混合集群)

news/2024/9/12 15:17:07/文章来源:https://www.cnblogs.com/xiongwei/p/18302793

说明: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 主机时间必须同步,可设置同步时间服务器(方法详见底部连接)

二、Windows加入集群

(一) 、Master 配置 (在centos 上执行)

1.master 启用网络桥接方式

建议在使用 Flannel 时为 iptables 链启用桥接方式的 IPv4 流处理。

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

注意:raw.githubusercontent.com 在国内大概率会被GFW 墙掉,可以手动执行命令 vi /etc/hosts 配置hosts :199.232.28.133 raw.githubusercontent.com

下载后,需要将文件kube-flannel.yml 中的 net-conf.json 部分,将 VNI 设置为 4096,并将 Port 设置为 4789。如下所示:

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

只有将linux上的 vni 设置成4096,port 设置成4789;才能与windows 上的flannel 实现通信,进而互操作。

3. 应用Linux 的 flannel 配置并验证

kubectl apply -f kube-flannel.yml

应用flannel 配置后,docker会从官网或配置的加速器中(最好是配置docker 加速器)下载flannel相关的镜像且运行相关的pod。这个过程需要时间,几分钟后,执行 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:

4.1 proxy:这里我的版本是 v1.20.0。需要根据自己的版本进行修改。

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 命令。

4.2.flannel:

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

前提是在windows server 2019 中已经安装了docker 且配置了镜像加速。且具有管理员权限。

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

1.2 执行命令,运行PrepareNode.ps1文件,下载并安装 wins,kubelet,kubeadm

.\PrepareNode.ps1 -KubernetesVersion v1.20.0

注意:执行上面第一条命令下载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:根据自己的版本来执行。

.\PrepareNode.ps1 -KubernetesVersion v1.20.0

  如果执行失败,删除C盘根目录下etc、run、var、opt和k(这几个目录有就删掉), 重新复制nssm-2.24.zip改为nssm.zip, 检查执行的错误并解决,再重新执行。如果是运行不成功,想要卸载,则参考后面的卸载步骤。

(三)、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

  这时候,windows docker 会下载几个镜像,会比较慢,需要等待一段时间(内网环境下,需要将镜像手动导入)。

3.在master 上查看集群的状态:

kubectl get nodes -o wide

  如果windows node 处于not ready 状况,可能是windows docker 还在下载相关的镜像,可通过 kubectl -n kube-system get pods -l app=flannel 查看flannel pod的运行情况。也可以通过 kubectl describe pod podname -n namespaces ,根据具体的pod和名称空间查看flannel的具体情况,以此来分析原因。

三、Windows K8S的卸载

windows 有时候不一定一次就能安装成功,这时候又已经安装了一些服务了,就需要K8S进行彻底的卸载。

1.1 master 节点删除该node。kubectl delete node nodename

1.2 windows 脱离节点。kubeadm reset

1.3 在计算机服务中,找到kubelet 服务和 Rancher wins,将其停止。

1.4 管理员权限 cmd 删除服务:sc delete kubelet ,`sc delete rancher-wins

1.5 防火墙的入站规则中,删除kubelet配置。

参考文章

1.官网:https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes/
2.其他参考:https://blog.csdn.net/MrRight17/article/details/111931094
3.补丁下载:https://www.tenforums.com/windows-10-news/128745-cumulative-update-kb4489899-windows-10-v1809-build-17763-379-mar-12-a.html?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744013.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[笔记]快速傅里叶变换(FFT)

模板题:P3803 【模板】多项式乘法(FFT) 快速傅里叶变换(Fast Fourier Transform,FFT)在算法竞赛中主要用于求卷积,或者说多项式乘法。如果我们枚举两数的各系数相乘,时间复杂度是\(O(n^2)\),而FFT可以将这一过程优化到\(O(n\log n)\)。 流程 整个FFT算法分\(3\)个过程:…

Improving News Recommendation via Bottlenecked Multi-task Pre-training论文阅读笔记

Improving News Recommendation via Bottlenecked Multi-task Pre-training论文阅读笔记 Abstract 现存的问题: ​ 现有的 PLM 大多是在大规模通用语料库上预先训练的,并没有专门用于捕捉新闻文章中的丰富信息。因此,它们生成的新闻嵌入信息可能不足以表示新闻内容或描述新闻…

uniapp 微信小程序阻止返回上一页

第一种:wx.enableAlertBeforeUnload在开发者工具中预览效果 微信小程序官网:点我onShow(() => {wx.enableAlertBeforeUnload({message: "返回上页时弹出对话框",success: function (res) {console.log("方法注册成功:", res);},fail: function (errM…

基于NXP i.MX 6ULL核心板的物联网模块开发案例(1)

目录 前 言 1 SDIO WIFI模块测试 1.1 STA模式测试 1.2 AP模式测试 1.3 SDIO WIFI驱动编译 前言 本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.1.0 Linux开发环境:Ub…

T113-i最新发布Tina5.0系统!支持3大新特性!

创龙科技全志T113-i双核Cortex-A7@1.2GHz全国产工业核心板(含税79元)一经面世,就以超高性价比受到全行业关注。而创龙科技再次为T113-i处理器平台进行软件系统完善,正式适配Tina5.0系统,大大满足了全志T113-i用户的不同场景需求,让工业应用更简单。 Tina5.0系统说明 Tina…

一文教你在华为云上部署Discuz论坛网站

在KooLabs云实验平台搭建Discuz论坛网站,Discuz基础架构采用流行的 Web 编程组合PHP+MySQL实现。本文分享自华为云社区《华为云之在Linux系统下部署Discuz 论坛网站【玩转华为云】》,作者:江湖有缘。 一、本次实践介绍 1.1 实践环境简介 1.本次实践环境使用华为KooLabs云实验…

6. 打印日志信息

6. 打印日志信息 在CMake中可以用用户显示一条消息,该命令的名字为message: message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)(无):重要信息 STATUS:非重要信息 WARNING:CMake 警告,会继续执行 AUTHOR_WARNING:CMa…

5. 库相关

5. 库相关 有些时候我们编写的源代码并不需要将他们编译生成可执行程序,而是生成一些静态库或动态库提供给第三方使用,下面来讲解在cmake中生成这两类库文件的方法。 5.1 什么是库 本部分介绍创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这…

Performance Monitoring检测camstar性能

InsiteXMLServer \ Provate Bytes使用内存的字节 InsiteXMLServer \ Working Set Peak 高峰 Process \ %Processor Time CPU占用时间 InsiteXMLServer \ Elapsed Time占用时间 Camstar.Security.LMServer \ Elapsed Time CamstarNotificatuionServer\Elapsed Time CIMSagent \ …

【Bug】拓展方法必须在非泛型静态类中定义

原文链接:https://blog.csdn.net/weixin_44231544/article/details/121752347 原: 修改: 拓展方法1.定义: (1)扩展方法能使你能够向现有类型添加“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。 (2)扩展方法是一种特殊的静态方法,但可以像…

kettle从入门到精通 第七十五课 ETL之kettle血缘,数据血缘

在了解kettle血缘之前,咱们先来了解下什么是数据血缘? 1、数据血缘定义(来自gpt) 数据血缘(Data Lineage)是指在数据管理和数据分析中追踪数据的源头、流向和处理过程的能力。具体来说,数据血缘描述了数据如何被创建、变换和移动,以及这些过程中数据的路径和影响。它有…