Container runtimes
Containerd¶
1.Prerequisites
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
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
# Apply sysctl params without reboot
sudo sysctl --system
sudo yum install -y yum-utils
#sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's|download.docker.com|mirrors.ustc.edu.cn/docker-ce|' /etc/yum.repos.d/docker-ce.repo
sudo yum makecache fast
sudo yum install -y containerd.io
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i '/\[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options\]/a\ SystemdCgroup = true' /etc/containerd/config.toml
sudo sed -i "s|k8s.gcr.io|registry.aliyuncs.com/google_containers|g" /etc/containerd/config.toml
sudo sed -i "s|registry-1.docker.io|registry.aliyuncs.com|g" /etc/containerd/config.toml
How can I change the default location?
sudo mkdir -p /data/containerd
sudo sed -i 's|/var/lib/containerd|/data/containerd|g' /etc/containerd/config.toml
4.Configure containerd sock.
sudo tee /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
cat <<EOF | sudo tee /usr/lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable containerd
sudo systemctl daemon-reload
sudo systemctl restart containerd
sudo systemctl status containerd
Make sure the right path of containerd.
ExecStart=/usr/bin/containerd
Docker¶
Kubernetes is deprecating Docker as a container runtime after v1.20.
1.Install docker engine on each of k8s nodes.
2.Configure the docker daemon.
sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
1.How can I speed up downloading images?
/etc/docker/daemon.json:
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
2.How can I change the default location for Docker images?
shell:
sudo mkdir -p <desired path>
/etc/docker/daemon.json:
"data-root": "<desired path>",
3.Restart Docker and enable it on boot.
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
Reference¶
1.Install Docker Engine
2.Kubernetes Container Runtimes
3.Crictl Configuration
4.Containerd.service