上次写了 Kubernetes 搭配 docker 使用,发现 kubernetes 目前对完整 docker 的支持不怎么样, docker 也包括 containerd,大家都是干类似工作的,而且安装 docker 的官方安装包,还有 containerd 的大部分工具,试试 containerd。
与上一篇前置相同,这里直接复制命令,具体情节请查看Debian 12 安装 Kubernetes(k8s) + docker ,配置主从节点
#准备
更新系统到最新,然后移除不再需要的软件,清理无用的安装包。
sudo apt update && sudo apt full-upgrade -y
sudo apt autoremove
sudo apt autoclean
包括但不限于关闭防火墙,关闭 SELinux,关闭 SWAP 分区,开启 Ip 转发,加载内核模块。
# 关闭防火墙
sudo ufw disable
# 关闭 swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
# 为 cri 准备
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# Apply sysctl params without reboot
sudo sysctl --system
#安装 containerd
sudo apt install containerd.io
如果使用 apt 安装,默认 cri 插件是处于 disabled 状态,修改配置,把 cri 从disabled_plugins 列表中移除,或者直接恢复 containerd 的默认配置
containerd config default | sudo tee /etc/containerd/config.toml
并且将 SystemdCgroup 改为 true。
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
重启服务。
sudo systemctl restart containerd