containerd
DOK 的容器运行时完全摆脱了 Docker,所以在组件安装是不会见到 Docker 的,当然在问题排查的时候,用原来的 Docker 命令去排查问题的习惯也是需要调整一下,下面是一个简单的指引,更具体的 Containerd 运维和排错的方法,请参考官方文档。
DOK 在部署的时候,关于 Containerd 的配置有几处是跟默认配置不相同的,如下:
# 为了防止根目录空间太少,会专门将containerd的目录转移
< root = "/data/containerd/var/lib/containerd"
---
> root = "/var/lib/containerd"
56c56
# 修改sandbox的镜像,这是Kubernetes v1.21.7的镜像版本
< sandbox_image = "k8s.gcr.io/pause:3.4.1"
---
> sandbox_image = "k8s.gcr.io/pause:3.5"
112c112
# 必须修改为true
< SystemdCgroup = true
---
> SystemdCgroup = false
129c129
# 这里的配置是为了让本机的Containerd能够顺利访问Helm部署出来的Harbor镜像仓库
< config_path = "/etc/containerd/certs.d"
---
> config_path = ""
关于镜像仓库的配置,下面是更详细的说明,其他信息可以查看 Harbor 章节的文档:
# tree /etc/containerd/certs.d/
/etc/containerd/certs.d/
└── core.harbor.domain
└── hosts.toml
# cat /etc/containerd/certs.d/core.harbor.domain/hosts.toml
server = "https://core.harbor.domain"
[host."https://core.harbor.domain"]
capabilities = ["pull", "resolve", "push"]
skip_verify = true
DOK 为每个节点都安装了应有的排查问题的工具,比如 crictl(最推荐), nerdctl, ctr 等等,习惯用 docker 命令的运维人员需要查看一下相关的文档,下面是几个例子:
# 查看镜像
docker images
crictl image ls
nerdctl -n k8s.io image ls
ctr -n k8s.io image ls
# 查看容器
docker ps
crictl ps
nerdctl -n k8s.io container ls
ctr -n k8s.io container ls
# 查看容器日志
docker logs <container-id>
crictl logs <container-id>
注意 crictl 有个配置文件,如果使用的时候遇到问题,可以查看一下配置文件是否正常。
# cat /etc/crictl.yaml
runtime-endpoint: "unix:///run/containerd/containerd.sock"
image-endpoint: "unix:///run/containerd/containerd.sock"
timeout: 0
debug: false
pull-image-on-create: false
disable-pull-on-run: false