Runtime有很多种,有Docker或者Containerd。1.24版本以下一般选择Docker作为Runtime。高于1.24选择Containerd作为Runtime。我们安装1.28版本的kubernetes,这里选择Containerd。
1. 安装Containerd
所有节点安装docker-ce-20.10:
yum install docker-ce-20.10.* docker-ce-cli-20.10.* -y
所有节点配置Containerd所需的模块:
cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
所有节点加载模块:
modprobe -- overlay
modprobe -- br_netfilter
所有节点配置Containerd所需的内核:
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
所有节点加载内核:
sysctl --system
所有节点配置Containerd的配置文件:
mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml
所有节点将Containerd的Cgroup改为Systemd:
vim /etc/containerd/config.toml
找到containerd.runtimes.runc.options,添加或修改SystemdCgroup = true(如果已存在直接修改,否则会报错),如下图所示:
所有节点将sandbox_image的Pause镜像改成符合自己版本的地址`registry.cn-beijing.aliyuncs.com/jiangxiaonan/pause:3.6`
仓库地址可以是国内公有云地址,也可以是个人仓库地址。
所有节点启动Containerd,并配置开机自启动:
systemctl daemon-reload
systemctl enable --now containerd
所有节点配置crictl客户端连接的运行时位置:
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
2. 安装Kubernetes组件
查看最新的Kubernetes 1.28是什么版本:
yum list kubeadm.x86_64 --showduplicates | sort -r | grep 1.28
最新的是1.28.2。
所有节点安装1.28最新版本kubeadm、kubelet和kubectl:
yum install kubeadm-1.28* kubelet-1.28* kubectl-1.28* -y
所有节点设置Kubelet开机自启动:
systemctl daemon-reload
systemctl enable --now kubelet
此时kubelet是起不来的,因为集群还没初始化,没有kubelet的配置文件,有报错不影响。