实战-kubeadm方式搭建k8s集群-v1-27-6-20231107-测试成功-阳明-荐(CRI-Containerd)
实战:kubeadm方式搭建k8s集群(k8s-v1.27.6,containerd-v1.6.20)-2023.11.7(部署成功-阳明)【荐】
搭建时期:2023年11月7日20:58:24
目录
[toc]
==写在前面==
本文档搭建步骤是在前面一篇文章实战:kubeadm方式搭建k8s集群(k8s-v1.25.4,containerd-v1.6.10)-2023.10.28(部署成功-阳明)【荐】.md
基础上,仅修改一部分内容,而搭建的。
最终搭建效果是成功了,至于后期是否存在问题,及其他潜在问题,待实际测试验证。
1、containerd-v1.6.20搭建过程和前面一样;
2、k8s-v1.27.6 就kubeadm.yaml
文件里的
(1)由registry.aliyuncs.com/k8sxio改为imageRepository:registry.aliyuncs.com/google_containers(2)coredns镜像也不用再单独拉取了;
3、kube-flannel下载新版本v0.22.2
版本;
其他操作,无任何改变。
实验软件新增kubeadm.yaml
,及config.toml
。
实验环境
1、硬件环境3台虚机 2c2g,20g。(nat模式,可访问外网)
角色 | 主机名 | ip | 内核版本 |
---|---|---|---|
master节点 | master1 | 172.29.9.61 | 3.10.0-1160.71.1.el7.x86_64 |
node节点 | node1 | 172.29.9.62 | 3.10.0-1160.71.1.el7.x86_64 |
node节点 | node2 | 172.29.9.63 | 3.10.0-1160.71.1.el7.x86_64 |
2、软件环境
软件 | 版本 |
---|---|
操作系统 | centos7.6_x64 1810 mini(其他centos7.x版本也行) |
containerd | v1.6.20 |
kubernetes | v1.27.6 |
注意:默认CentOS Linux release 7.6.1810 (Core)的内核是
3.10.0-957.el7.x86_64
,但老师当前的内核版本有发生改变。基于之前经验,如果内核版本太低,后续的一些实验可能会有影响。这里就暂且使用默认的内核版本就好,后续遇到问题时,再升级下内核或者安装好k8s集群后升级下内核就好,或者先升级完内核再k8s集群都是可以的。
实验软件
链接:https:bashhostnamectl--staticset-hostnamenode1bashhostnamectl--staticset-hostnamenode2bash
注意: 节点的 hostname 必须使用标准的 DNS 命名,另外千万不用什么默认的
localhost
的 hostname,会导致各种错误出现的。 在 Kubernetes 项目里,机器的名字以及一切存储在 Etcd 中的 API 对象,都必须使用标准的 DNS 命名(RFC 1123)。 可以使用命令hostnamectl set-hostname node1
来修改 hostname。
3.关闭防火墙,selinux
systemctlstopfirewalld&&systemctldisablefirewalldsystemctlstopNetworkManager&&systemctldisableNetworkManagersetenforce0sed-is/SELINUX=enforcing/SELINUX=disabled//etc/selinux/config
1
# 使用下面命令验证是否禁用成功☸➜cat/etc/selinux/configSELINUX=disabled# 或者用如下命令验证:[root@master1 ~]#getenforce Disabled
注意: 如果使用的是云服务器,比如阿里云、腾讯云等,需要配置安全组,放开端口,如果只是为了测试方便可以直接全部放开,对于生产环境则只需要放开 K8s 要是使用到的一些端口,比如 6443 等等。
4.关闭swap分区
# 修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载swapoff-ased-ri's/.*swap.*/#&/'/etc/fstab# 使用 free -m 确认 swap 已经关闭[root@master1 ~]#free -mhtotalusedfreesharedbuff/cacheavailableMem:1.8G89M1.5G9.5M144M1.5GSwap:0B0B0B
问题:k8s集群安装为什么需要关闭swap分区? swap必须关,否则kubelet起不来,进而导致k8s集群起不来;可能kublet考虑到用swap做数据交换的话,对性能影响比较大
5.配置dns解析
cat>>/etc/hosts<<EOF172.29.9.61 master1172.29.9.62 node1172.29.9.63 node2EOF
节点的 hostname 必须使用标准的 DNS 命名,另外千万别用默认 localhost 的 hostname,会导致各种错误出现的。在 Kubernetes 项目里,机器的名字以及一切存储在 Etcd 中的 API 对象,都必须使用标准的 DNS 命名(RFC 1123)。可以使用命令 hostnamectl set-hostname xxx 来修改 hostname。
问题:k8s集群安装时节点是否需要配置dns解析? 就是后面的kubectl如果需要连接运行在node上面的容器的话,它是通过kubectl get node出来的名称去连接的,所以那个的话,我们需要在宿主机上能够解析到它。如果它解析不到的话,那么他就可能连不上;🤣
6.开启内核 ipv4 转发
由于开启内核 ipv4 转发需要加载 br_netfilter 模块,所以加载下该模块:
[root@master1 ~]#lsmod |grepbr_netfilter[root@master1 ~]#modprobe br_netfilter[root@master1 ~]#lsmod |grepbr_netfilterbr_netfilter222560bridge1513361br_netfilter
🚩 ==注意:==
最好将上面的命令设置成开机启动,因为重启后模块失效,下面是开机自动加载模块的方式,在 /etc/rc.d/rc.local 文件末尾添加如下脚本内容:
cat>>/etc/rc.d/rc.local<<EOFfor file in /etc/sysconfig/modules