CentOS9 kubeadm 安装 K8s(containerd)
安装 docker 和 containerd 运行时
设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker 引擎、containerd 和 Docker Compose
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动 Docker
sudo systemctl start docker
为containerd创建一个配置文件并将其设置为默认值
sudo containerd config default | sudo tee /etc/containerd/config.toml
修改 /etc/containerd/config.toml 配置文件
将 cgroupdriver
设置为 systemd
找到
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
并将 SystemdCgroup
的值更改为 true
修改 pause 镜像地址
找到
[plugins."io.containerd.grpc.v1.cri"]
并将 sandbox_image
的值更改为 registry.cn-hangzhou.aliyuncs.com/google\_containers/pause:3.6
修改 CRI API 的镜像地址
找到
[plugins."io.containerd.grpc.v1.cri".registry]
并将 config_path
的值更改为 /etc/containerd/certs.d
保存上面的更改
新建k8s.gcr.io 镜像配置
mkdir -p /etc/containerd/certs.d/k8s.gcr.io
cat << EOF > /etc/containerd/certs.d/k8s.gcr.io/hosts.toml
server = "https://k8s.gcr.io"
[host."https://registry.cn-hangzhou.aliyuncs.com/google_containers"]
capabilities = ["pull", "resolve"]
EOF
新建docker.io镜像配置
mkdir -p /etc/containerd/certs.d/docker.io
cat << EOF > /etc/containerd/certs.d/docker.io/hosts.toml
server = "https://registry-1.docker.io"
[host."https://你的地址.mirror.aliyuncs.com"]
capabilities = ["pull", "resolve", "push"]
EOF
要完成上面的更改需要重启containerd
sudo systemctl restart containerd
注意 上面registry
配置部分不会影响 ctr 和 docker 命令的加速,所以 "io.containerd.grpc.v1.cri"
配置不适用于 ctr pull&docker pull等等,这么做的目的是为 k8s 加速,如果需要使用 docker-cli 和 ctr 的同学可以单独去配置或者直接用crictl,因为我们最终用的是 k8s 所以这里不过多讲述。
环境准备
关闭交换分区
sudo swapoff –a
将 SELinux 设置为 permissive
模式
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
转发 IPv4 并让 iptables 查看桥接流量
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
sudo sysctl --system
开启 ipvs
mkdir /etc/sysconfig/modules
cat <<EOF | sudo tee /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
tips:高版本的centos内核nf_conntrack_ipv4被nf_conntrack替换了,如果你是低版本的 centos 请把nf_conntrack改为nf_conntrack_ipv4