kubeadm部署Kubernetes 1.24版本集群,已踩坑

admin 2025-04-15 278人围观 ,发现187个评论
一、版本发布及改动1.1发布

2022年5月3日,正式发布,在新版本中,我们看到Kubernetes作为容器编排的事实标准,正愈发变得成熟,有12项功能都更新到了稳定版本,同时引入了很多实用的功能,例如StatefulSets支持批量滚动更新,NetworkPolicy新增NetworkPolicyStatus字段方便进行故障排查等

1.2改动

Kubernetes正式移除对Dockershim的支持,讨论很久的“弃用Dockershim”也终于在这个版本画上了句号。

想要清楚地了解docker和k8s的关系,可以参考下这篇文章:

之前:


之后:

如还想继续在k8s中使用docker,需要自行安装cri-dockerd组件;不然就使用containerd



二、版本集群部署2.1版本集群部署环境准备2.1.1主机操作系统说明

序号

操作系统及版本

备注

1

2.1.2主机硬件配置说明

CPU

内存

硬盘

角色

IP地址

主机名

4C

8G

100GB

master

172.16.200.30

k8s-master01

4C

8G

100GB

node

172.16.200.31

k8s-node1

4C

8G

100GB

node

172.16.200.32

k8s-node2

2.1.3主机配置2.1.3.1主机名配置

由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为node节点,名称分别为:k8s-node1及k8s-node2

master节点hostnamectlset-hostnamek8s-node1
node2节点临时关闭永远关闭swap分区,需要重启操作系统sed-i'/swap/s/^\(.*\)$/systemctldisablefirewalldfirewall-cmd--statenotrunning
2.1.3.5SELINUX配置
setenforce0sed-ri's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config
2.1.3.6时间同步配置
设置上海时区,东八区使之生效$sysctl-p/etc//
modprobebr_netfilter
lsmod|grepbr_netfilterbr_netfilter222560
2.1.3.9安装ipset及ipvsadm
安装ipset及ipvsadm$yum-yinstallipsetipvsadm
格式化磁盘$/dev/sdb写入挂载信息到fstab中,永久挂载$echo"/dev/sdb/var/lib/dockerext4defaults00"/etc/fstab查看磁盘挂载$df-h/dev/sdb安装旧版本启动docker$systemctlenabledockersystemctlrestartdocker
2.2.5cri-dockerd安装2.2.5.1下载cri-dockerd二进制文件

项目地址:



下载二进制版本


+x/usr/bin/cri-dockerd
生成socket文件cat"EOF"/usr/lib/systemd/system/[Unit]Description=CRIDockerSocketfortheAPIPartOf=[Socket]ListenStream=%t/=0660SocketUser=rootSocketGroup=docker[Install]WantedBy=

【也可以直接下载,需要修改中ExecStart启动参数,这里/usr/bin/cri-dockerd一定要加上参数--pod-infra-container-image=/google_containers/pause:3.7用来指定所用的pause镜像是哪个,否则默认拉取/pause:3.6,会导致安装失败。

2.2.5.2启动cri-docker
systemctldaemon-reloadsystemctlstartcri-dockersystemctlenablecri-dockersystemctlstatuscri-docker
2.3集群部署2.3.1集群软件及版本说明

截至本文发稿,2022.6.6最新版是1.24.1版本

kubeadm

kubelet

kubectl

版本

1.24.1

1.24.1

1.24.1

安装位置

集群所有主机

集群所有主机

集群所有主机

作用

初始化集群、管理集群等

用于接收api-server指令,对pod生命周期进行管理

集群应用命令行管理工具

2.3.2kubernetesYUM源准备2.3.2.1谷歌YUM源[国外主机]
$catEOF/etc//[kubernetes]name=Kubernetesbaseurl=
2.3.2.2阿里云YUM源【国内主机】
$catEOF/etc//[kubernetes]name=Kubernetesbaseurl=$yumcleanallyummakecache
2.3.3集群软件安装
默认安装的版本就是最新版1.24.X,当然也可以指定版本安装,如$yuminstallkubeadmkubeletkubectlpod子网scheduler:{}---apiVersion:/v1alpha1kind:KubeProxyConfigurationmode:ipvs
2.3.6集群镜像准备
提前下载镜像到本地$[config/images]/google_containers/kube-apiserver:[config/images]/google_containers/kube-controller-manager:[config/images]/google_containers/kube-scheduler:[config/images]/google_containers/kube-proxy:[config/images]/google_containers/pause:3.7[config/images]/google_containers/etcd:3.5.3-0[config/images]/google_containers/coredns:$/google_containers//google_containers//google_containers//google_containers//google_containers//google_containers//google_containers/
!/bin/images_list='/google_containers/kube-apiserver:/google_containers/kube-controller-manager:/google_containers/kube-scheduler:/google_containers/kube-proxy:/google_containers/pause:3.7/google_containers/etcd:3.5.3-0/google_containers/coredns:$images_listdodockerpull$$images_list
2.3.7集群初始化
kubeadminit--config=
kubeadmconfigimagespull--config==5I060410:03:37.1339022673:255]loadingconfigurationfrom""I060410:03:37.1363542673:214];settingitto"systemd"[config/images]/google_containers/kube-apiserver:[config/images]/google_containers/kube-controller-manager:[config/images]/google_containers/kube-scheduler:[config/images]/google_containers/kube-proxy:[config/images]/google_containers/pause:3.7[config/images]/google_containers/etcd:3.5.3-0[config/images]/google_containers/coredns:[root@localhost~]mkdir-p$HOME/.kube[root@k8s-master01~]chown$(id-u):$(id-g)$HOME/.kube/config[root@k8s-master01~]exportKUBECONFIG=/etc/kubernetes/
2.3.8集群网络准备2.3.8.1calico安装
wget:"10.244.0.0/16".
[root@kubesphere~]watchkubectlgetpods-nkube-system
已经全部运行[root@k8s-master01~]curl-L
安装calicoctlchmod+x/usr/bin/calicoctl查看添加权限后文件calicoctlversionClientVersion::967e24543ClusterVersion::k8s,bgp,kubeadm,kdd
通过~/.kube/config连接kubernetes集群,查看已运行节点$DATASTORE_TYPE=kubernetes$KUBECONFIG=~/.kube/config$calicoctlgetnodesNAMEk8s-master01
2.3.9集群工作节点添加
[root@k8s-node1~]:6443--\--discovery-token-ca-cert-hashsha256:7323a8b0658fc33d89e627f078f6eb16ac94394f9a91b3335dd3ce73a3f313a0--cri-socketunix:///var/run/

注意:必须要加上--cri-socketunix:///var/run/,不然会报错

在master节点上操作,查看网络节点是否添加kubectlgetno
查看集群健康情况[root@k8s-master01~]#kubectlgetcsWarning:+NAMESTATUSMESSAGEERRORcontroller-managerHealthyokschedulerHealthyoketcd-0Healthy{"health":"true","reason":""}
三、参考

;spm_id_from=333.880.my_

不容错过