以下操作全部节点执行,如果使用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安装

---
1
2
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安装

1
2
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 控制管理器。当资源有压力时,有可能会出现不稳定的情况。

1
2
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