晓夏

YoungCheung

Zhang Sir's technical way

Container Runtime

浏览量:98

为了在 Pod 中运行容器,Kubernetes 使用 容器运行时(Container Runtime)

默认情况下,Kubernetes 使用 容器运行时接口(Container Runtime Interface,CRI) 来与你所选择的容器运行时交互。

如果你不指定运行时,则 kubeadm 会自动尝试检测到系统上已经安装的运行时, 方法是扫描一组众所周知的 Unix 域套接字。 下面的表格列举了一些查找的容器运行时及其对应的套接字路径:


运行时域套接字
Docker Engine/var/run/dockershim.sock
containerd/run/containerd/containerd.sock
CRI-O/var/run/crio/crio.sock

如果同时检测到 Docker Engine 和 containerd,kubeadm 将优先考虑 Docker Engine。 这是必然的,因为 Docker 18.09 附带了 containerd 并且两者都是可以检测到的, 即使你仅安装了 Docker。 **如果检测到其他两个或多个运行时,kubeadm 输出错误信息并退出。**

kubelet 可以使用已弃用的 dockershim 适配器与 Docker Engine 集成(dockershim 是 kubelet 本身的一部分)。

containerd

1、安装和配置的先决条件

cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置必需的 sysctl 参数,这些参数在重新启动后仍然存在。
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 参数而无需重新启动
sudo sysctl --system

2、下载continerd

yum install  containerd.io  -y

3、配置containerd

sudo mkdir -p /etc/containerd 
containerd config default | sudo tee /etc/containerd/config.toml


4、修改配置和修改systemd cgroup程序驱动

结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml 中设置
# 找到containerd.runtimes.runc.options,在其下加入SystemdCgroup = true
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
              SystemdCgroup = true
    [plugins."io.containerd.grpc.v1.cri".cni]

# 将sandbox_image默认地址改为符合版本地址
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6"

#配置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

5、启动

sudo systemctl restart containerd

















神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。