以下操作全部节点执行,如果使用docker作为容器运行时,最高支持的k8s版本为1.23.17。
版本选择
---
每个k8s版本都有对应的docker版本范围,具体参考官方文档https://github.com/kubernetes/kubernetes/releases
以1.23.X为例,查看https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md

由更新日志可知,支持的docker版本为20.10.7以上,也不用安装最新版本的docker,以免出现docker版本与k8s版本不匹配的现象,此处就以安装20.10.7为例。
docker安装
---
RHEL安装
---
| 12
 3
 4
 5
 6
 7
 8
 
 | # 安装前源准备[root@k8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
 # 配置yum源
 [root@k8s-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 # 查看可安装的docker版本
 [root@k8s-master ~]# yum list docker-ce --showduplicates | sort -r
 # 安装20.10.6版本docker
 [root@k8s-master ~]# yum install -y docker-ce-20.10.7
 
 | 
Debian安装
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 
 | # 安装前源准备apt install -y apt-transport-https ca-certificates curl software-properties-common
 # 配置yum源
 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
 add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
 apt-get -y update
 # 查看可安装的docker版本
 apt-cache madison docker-ce | sort -V
 # 安装docker
 apt-get -y install docker-ce=5:20.10.24~3-0~ubuntu-focal
 mkdir -p /etc/docker
 tee /etc/docker/daemon.json <<-'EOF'
 {
 "registry-mirrors": [
 "https://mirror.ccs.tencentyun.com",
 "https://o2j0mc5x.mirror.aliyuncs.com"
 ]
 }
 EOF
 systemctl daemon-reload
 systemctl enable docker
 systemctl restart docker
 
 | 
禁用iptables的forward调用链
---
docker 1.13以上版本默认禁用iptables的forward调用链,因此需要执行开启命令:
<font style="background-color:rgba(255, 255, 255, 0);">[root@k8s-master ~]# iptables -P FORWARD ACCEPT</font>
修改docker cgroup driver为systemd
---
systemd 是 Kubernetes 自带的 cgroup 管理器,负责为每个进程分配 cgroupfs,但 Docker 的 cgroup driver 默认是 cgroupfs,这样就同时运行了两个 cgroup 控制管理器。当资源有压力时,有可能会出现不稳定的情况。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | [root@k8s-master ~]# mkdir -p /etc/docker[root@k8s-master ~]# vim /etc/docker/daemon.json
 {
 "registry-mirrors": [
 "https://mirror.ccs.tencentyun.com",
 "https://o2j0mc5x.mirror.aliyuncs.com"
 ],
 "exec-opts": [
 "native.cgroupdriver=systemd"
 ]
 }
 [root@k8s-master ~]# systemctl daemon-reload
 [root@k8s-master ~]# systemctl enable docker
 [root@k8s-master ~]# systemctl start docker
 [root@k8s-master ~]# docker info | grep Driver
 Storage Driver: overlay2
 Logging Driver: json-file
 Cgroup Driver: systemd
 
 |