系列文章目录
第一章 kubernetes1.24部署
第二章 选择docker作为容器运行时
第三章 选择containerd作为容器运行时
第四章 选择cri-o作为容器运行时
第五章 网络插件flannel部署
第六章 网络插件calico部署
第七章 网络插件cilium部署
文章目录
选择containerd作为kubernetes运行时
作为CNCF目前为止唯一一个在运行时毕业的项目,Containerd 是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性。Containerd 可以在宿主机中管理完整的容器生命周期:容器镜像的传输和存储、容器的执行和管理、存储和网络等。
1. 安装containerd
1.1 containerd安装
- 下载压缩包:
# wget https://github.com/containerd/containerd/releases/download/v1.6.6/containerd-1.6.6-linux-amd64.tar.gz
- 解压:
# tar Cxzvf /usr/local containerd-1.6.6-linux-amd64.tar.gz
- 验证一下contaienrd是否安装成功:
# containerd -v
//出现版本信息则为安装成功,示例如下:
containerd github.com/containerd/containerd v1.6.6 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
1.2 设置containerd的system启动
- 创建文件夹:
# mkdir -p /usr/local/lib/systemd/system/
- 写入官网给的service代码
# vim /usr/local/lib/systemd/system/containerd.service
//文件内容如下:
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
由于篇幅限制,去掉了注释行。源代码可以去github官网拿:
https://github.com/containerd/containerd/blob/main/containerd.service
- 配置重载以及启动:
# systemctl daemon-reload
//设置开机自启
# systemctl enable --now containerd
//查看是否启动成功
# systemctl status containerd.service
1.3 安装runc
//下载
# wget https://github.com/opencontainers/runc/releases/download/v1.1.2/runc.amd64
//安装
# install -m 755 runc.amd64 /usr/local/sbin/runc
1.4 安装CNI插件
//下载
# wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
//解压到指定目录
# mkdir -p /opt/cni/bin
# tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz
2. 配置containerd
通过生产containerd的配置文件来修改containerd的配置。
2.1 containerd的cgroup驱动
设置containerd的cgroup,改为systemd的驱动方式
# mkdir -p /etc/containerd
//生成containerd的配置文件
# containerd config default | sudo tee /etc/containerd/config.toml
然后找到SystemCgroup字段,改为true
最后重载以及重启:
# systemctl daemon-reload
# systemctl restart containerd
# systemctl status containerd
2.2 containerd的网络代理
设置containerd的网络代理,使其能访问外网拉取镜像
# mkdir -p /etc/systemd/system/containerd.service.d/
# vim /etc/systemd/system/containerd.service.d/http_proxy.conf
[Service]
Environment="HTTP_PROXY=http://**************************************"
Environment="HTTPS_PROXY=http://*************************************"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.10.229,master2,"
代理配置部分根据自己环境修改。
重载以及重启:
# systemctl daemon-reload
# systemctl restart containerd
# systemctl status containerd
3. 总结
containerd的安装方法相对简单,踩坑的地方比较少,不仅如此,安装containerd,runc,cni,以及配置contianerd.service的部分还能做成一个shell脚本,安装比较方便。
编辑时间:2022-8-22