如何使用 crictl 找出容器的 PID

如何使用 crictl 找出容器的 PID

Kubernetes 正在弃用 Docker 作为 CRI 引擎。现在有 containerd 和 CRI-O,它们可以作为它的替代品。两者都可以通过 cri-tools 中的 crictl 进行管理。

我需要一些常用的方法来找到正在运行的容器的 PID。

其实我需要一个批判性思维相当于docker命令:

# docker inspect 86cd8d605c2da -f '{{ .State.Pid }}'
9625

答案1

正如我在评论部分提到的那样,为了实现你需要使用中国国际广播电台您也可以使用inspect命令。

获取容器PID的步骤

  1. 列出要获取的容器Container ID
$ crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                   ATTEMPT             POD ID
cdb3feac5bdd3       35c43ace92162       3 minutes ago       Running             nginx                  0                   940b5d97fb46a
0d84f965a1c8d       6266988902813       29 minutes ago      Running             prometheus-to-sd       0                   11dad991a79e4
437c1e31d5ff1       ccbe64d6d9477       29 minutes ago      Running             metadata-agent-nanny   0                   74cbad8857254
  1. 检查特定容器
$ crictl inspect cdb3feac5bdd3
{
  "status": {
    "id": "cdb3feac5bdd3981d58fb3cd2fc08cf53bbff326a38c95a77e7ec43a80fa9713",
    "metadata": {
      "attempt": 0,
      "name": "nginx"

在下面的部分,您将能够找到这个容器PID

"info": {
    "sandboxID": "940b5d97fb46a3c6efdf256f751cab3f3a282150efd4cdef969692d03deb4829",
    "pid": 15701,

以上(默认)输出是Go-Template格式(您也可以选择YAMLJSON格式化)。

$ crictl inspect
NAME:
   crictl inspect - Display the status of one or more containers

OPTIONS:
   --output value, -o value  Output format, One of: json|yaml|go-template|table

为了获得您需要的信息,您只需要指定path此信息。

$ crictl inspect --output go-template --template '{{.info.pid}}' cdb3feac5bdd3
15701

解决方案

使用以下命令来containerID获取容器PID

$ crictl inspect --output go-template --template '{{.info.pid}}' <yourContainerID>

相关内容