这篇文章主要讲解了“怎么搭建一个集成了containerd的k8s集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么搭建一个集成了containerd的k8s集群”吧!
概念介绍
<!--more-->
概述
由于docker嵌入了太多自身内容,为了减轻容器负担。此次选用containerd作为kubernetes的容器实现方案。
环境准备
下载containerd二进制包。我这里已经编译并打包了好了,内含containerd、runc、crictl、ctr等。
runc版本: 1.0.1-dev
containerd版本: v1.2.4
安装
安装containerd
解压二进制包并生成默认文件
tar -C /usr/local/bin -xzf containerd-v1.2.4.tar.gz
chmod a+x /usr/local/bin/*
containerd config default > /etc/containerd/config.toml
生成的默认配置文件注意 [grpc]
的 address
字段默认为 /run/containerd/containerd.sock
配置文件其他参数含义参照github地址: https://github.com/containerd/containerd/blob/master/docs/man/containerd-config.toml.5.md
在 /etc/systemd/system
目录下编写文件 containerd.service
内容如下
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target
[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
启动containerd
systemctl enable containerd
systemctl restart containerd
systemctl status containerd
看containerd启动状态如果是running就没有问题。下面我们测试拉取一下hub的镜像。
测试containerd
ctr images pull docker.io/library/nginx:alpine
看到输出done,说明containerd运行一切正常。
使用crictl连接containerd
下一步我们使用crictl连接containerd。
修改crictl的配置文件,在 /etc/crictl.yaml
写入以下内容:
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
这里注意runtime-endpoint 和image-endpoint 必须与/etc/containerd/config.toml中配置保持一致。
验证一下cri插件是否可用
crictl pull nginx:alpine
crictl rmi nginx:alpine
crictl images
其中 crictl images
会列出所有的cri容器镜像。
到此我们的cri + containerd已经完成整合了。下一步我们需要修改kubeadm配置进行安装。
导入kubenetes离线镜像包
这里我们就需要导入k8s的离线镜像包了。这里需要注意一下,kubernetes是调用的cri接口,所以导入时也需要从cri插件导入镜像。
修改kubelet配置和kubeadm安装时配置
在 kubelet配置文件 10-kubeadm.conf 的[Service]
结点加入以下配置:
Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
在kubeadm配置文件 kubeadm.yaml 中加入
apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
nodeRegistration:
criSocket: /run/containerd/containerd.sock
name: containerd
到此containerd和kubernetes的集成就完成了。下面可以直接安装即可。
感谢各位的阅读,以上就是“怎么搭建一个集成了containerd的k8s集群”的内容了,经过本文的学习后,相信大家对怎么搭建一个集成了containerd的k8s集群这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!