在使用containerd时如何检查正在运行的容器

148次阅读
没有评论

问题描述

在将 Kubernetes 集群切换到使用 containerd 后,想要知道如何检查运行中的容器。他在同一节点上有两个运行中的 pod,这是 GitHub Runners。以前他使用 “docker container ls” 命令来查看正在运行的容器,但在使用 containerd 时该如何查看?

解决方案

请注意以下操作可能受版本差异影响,使用时请做好备份。

方案1

在使用 containerd 时,你可以使用 ctr 命令来检查正在运行的容器。以下是一些常用的 ctr 命令来实现这个目标:

  1. 列出正在运行的容器:
sudo ctr c list
  1. 列出指定命名空间中的容器:
sudo ctr -n <namespace> c list
  1. 列出所有可用的命名空间:
sudo ctr ns list

请注意,ctr 命令需要使用 sudo 以管理员权限运行。

方案2

另一种方法是使用 crictl 命令来查看正在运行的容器,这也是一种常见的容器运行时命令。crictl 可以与不同的容器运行时兼容,包括 cri-o 和 containerd。以下是使用 crictl 命令来查看正在运行的容器的示例:

  1. 列出正在运行的容器:
crictl ps
  1. 列出指定 pod 中的容器:
crictl pods

请注意,crictl 命令不需要使用 sudo,但你需要确认你的 crictl 配置是否正确。你可以检查 /etc/crictl.yaml 配置文件,特别是当使用 containerd 时,确保它查询 containerd 的 socket 文件。

当前最佳回答建议使用 crictl 命令来检查正在运行的容器。

方案3

如果你的容器运行时环境比较复杂,涉及到多个容器运行时,你也可以使用一些第三方工具来管理容器的运行顺序和状态。但这可能会增加一些复杂性,需要确保容器之间的依赖关系设置正确。

以上是使用 ctrcrictl 命令来检查正在运行的容器的方法,你可以根据你的环境和需求选择合适的方法。

正文完