CRI-tools

通常,容器引擎会提供一个命令行工具来帮助用户调试容器应用并简化故障排错。比如使用 Docker 作为容器运行时的时候,可以使用 docker 命令来查看容器和镜像的状态,并验证容器的配置是否正确。但在使用其他容器引擎时,推荐使用 crictl 来替代 docker 工具。

crictlcri-tools 的一部分,它提供了类似于 docker 的命令行工具,不需要通过 Kubelet 就可以通过 CRI 跟容器运行时通信。它是专门为 Kubernetes 设计的,提供了Pod、容器和镜像等资源的管理命令,可以帮助用户和开发者调试容器应用或者排查异常问题。crictl 可以用于所有实现了 CRI 接口的容器运行时。

注意,crictl 并非 kubectl 的替代品,它只通过 CRI 接口与容器运行时通信,可以用来调试和排错,但并不用于运行容器。虽然 crictl 也提供运行 Pod 和容器的子命令,但这些命令仅推荐用于调试。需要注意的是,如果是在 Kubernetes Node 上面创建了新的 Pod,那么它们会被 Kubelet 停止并删除。

除了 crictl,cri-tools 还提供了用于验证容器运行时是否实现 CRI 需要功能的验证测试工具 critestcritest 通过运行一系列的测试验证容器运行时在实现 CRI 时是否与 Kubelet 的需求一致,推荐所有的容器运行时在发布前都要通过其测试。一般情况下,critest 可以作为容器运行时集成测试的一部分,用以保证代码更新不会破坏 CRI 功能。

cri-tools 已在 v1.11 版 GA,详细使用方法请参考 kubernetes-sigs/cri-toolsDebugging Kubernetes nodes with crictl

crictl 示例

查询 Pod

$ crictl pods --name nginx-65899c769f-wv2gp
POD ID              CREATED             STATE               NAME                     NAMESPACE           ATTEMPT
4dccb216c4adb       2 minutes ago       Ready               nginx-65899c769f-wv2gp   default             0

Pod 列表

$ crictl pods
POD ID              CREATED              STATE               NAME                         NAMESPACE           ATTEMPT
926f1b5a1d33a       About a minute ago   Ready               sh-84d7dcf559-4r2gq          default             0
4dccb216c4adb       About a minute ago   Ready               nginx-65899c769f-wv2gp       default             0
a86316e96fa89       17 hours ago         Ready               kube-proxy-gblk4             kube-system         0
919630b8f81f1       17 hours ago         Ready               nvidia-device-plugin-zgbbv   kube-system         0

镜像列表

容器列表

容器内执行命令

容器日志

参考文档

最后更新于