Dok Docs
Github Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

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

参考资料

  1. docker、containerd、ctr、crictl的联系