从 OKR 部署中获得的 7 项关键经验(从前慢)
1221
2022-05-29
一、Containerd简介
containerd 实现了 kubernetes 的 Container Runtime Interface (CRI) 接口,提供容器运行时核心功能,如镜像管理、容器管理等,相比 dockerd 更加简单、健壮和可移植。
而且由于kubernetes官方社区在发布的v1.20版本中声明将弃用 Dockershim,即 Docker 容器运行时接口(CRI),这意味着不再支持 Docker,并将在后续版本中删除。
二、Containerd部署
1、下载分发二进制文件
一、Containerd简介
containerd 实现了 kubernetes 的 Container Runtime Interface (CRI) 接口,提供容器运行时核心功能,如镜像管理、容器管理等,相比 dockerd 更加简单、健壮和可移植。
而且由于kubernetes官方社区在发布的v1.20版本中声明将弃用 Dockershim,即 Docker 容器运行时接口(CRI),这意味着不再支持 Docker,并将在后续版本中删除。
二、Containerd部署
1、下载分发二进制文件
所需组件-:下载最新的二进制包
https://github.com/kubernetes-sigs/cri-tools/releases/
https://github.com/opencontainers/runc/releases/
https://github.com/containernetworking/plugins/releases/
https://github.com/containerd/containerd/releases/
如果下载太慢,那么下载到本地电脑然后上传至服务器
[root@k8s-master1 ~]# mkdir -p /opt/k8s/work/
[root@k8s-master1 ~]# cd /opt/k8s/work/
[root@k8s-master1 work]# wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.19.0/crictl-v1.19.0-linux-amd64.tar.gz \
https://github.com/opencontainers/runc/releases/download/v1.0.0-rc92/runc.amd64 \
https://github.com/containernetworking/plugins/releases/download/v0.9.0/cni-plugins-linux-amd64-v0.9.0.tgz \
https://github.com/containerd/containerd/releases/download/v1.4.3/containerd-1.4.3-linux-amd64.tar.gz
[root@k8s-master1 work]# mkdir containerd
[root@k8s-master1 work]# tar -xvf containerd-1.4.3-linux-amd64.tar.gz -C containerd
[root@k8s-master1 work]# tar -xvf crictl-v1.19.0-linux-amd64.tar.gz
[root@k8s-master1 work]# mkdir cni-plugins
[root@k8s-master1 work]# tar -xvf cni-plugins-linux-amd64-v0.9.0.tgz -C cni-plugins
[root@k8s-master1 work]# mv runc.amd64 runc
2、分发二进制程序
将程序包分发给Worker节点
NODE_IPS变量可以在profile中定义worker节点的IP地址数组
[root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /opt/k8s/bin"
scp containerd/bin/* crictl cni-plugins/* runc root@${node_ip}:/opt/k8s/bin
ssh root@${node_ip} "chmod a+x /opt/k8s/bin/* && mkdir -p /etc/cni/net.d"
done
3、创建和分发 containerd 配置文件
[root@k8s-master1 work]# cat << EOF | sudo tee containerd-config.toml
version = 2
root = "/data/k8s/containerd/root"
state = "/data/k8s/containerd/state"
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/hu279318344/pause-amd64:3.1"
[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = "/opt/k8s/bin"
conf_dir = "/etc/cni/net.d"
[plugins."io.containerd.runtime.v1.linux"]
shim = "containerd-shim"
runtime = "runc"
runtime_root = ""
no_shim = false
shim_debug = false
EOF
分发配置文件至集群各个worker节点
NODE_IPS变量我是在/etc/profile中定义的各个Worker节点IP数组
CONTAINERD_DIR同样也是在/etc/profile中定义的,这里我定义的路径为/data/k8s/containerd
[root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /etc/containerd/ ${CONTAINERD_DIR}/{root,state}"
scp containerd-config.toml root@${node_ip}:/etc/containerd/config.toml
done
4、创建 containerd systemd模板文件
[root@k8s-master1 work]# cat < [Unit] Description=containerd container runtime Documentation=https://containerd.io After=network.target [Service] Environment="PATH=/opt/k8s/bin:/bin:/sbin:/usr/bin:/usr/sbin" ExecStartPre=/sbin/modprobe overlay ExecStart=/opt/k8s/bin/containerd Restart=always RestartSec=5 Delegate=yes KillMode=process OOMScoreAdjust=-999 LimitNOFILE=1048576 LimitNPROC=infinity LimitCORE=infinity [Install] WantedBy=multi-user.target EOF 5、分发 systemd文件并启动服务 [root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp containerd.service root@${node_ip}:/etc/systemd/system ssh root@${node_ip} "systemctl enable containerd && systemctl restart containerd" done 三、部署crictl命令行工具 [root@k8s-master1 work]# cat << EOF | sudo tee crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF 分发到所有 worker 节点: [root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp crictl.yaml root@${node_ip}:/etc/crictl.yaml done 2、crictl命令使用 Docker Nginx 容器
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。