使用 crictl 调试 Kubernetes 节点
特性状态:
Kubernetes v1.11 [稳定]
crictl
是一个用于 CRI 兼容容器运行时的命令行接口。您可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序。crictl
及其源代码托管在 cri-tools 仓库中。
开始之前
crictl
需要一个具有 CRI 运行时的 Linux 操作系统。
安装 crictl
您可以从 cri-tools 发布页面 下载 crictl
的压缩包,适用于几种不同的架构。下载与您的 Kubernetes 版本对应的版本。将其解压缩并移动到系统路径上的某个位置,例如 /usr/local/bin/
。
一般用法
crictl
命令有几个子命令和运行时标志。使用 crictl help
或 crictl <子命令> help
获取更多详细信息。
您可以通过执行以下操作之一来设置 crictl
的端点
- 设置
--runtime-endpoint
和--image-endpoint
标志。 - 设置
CONTAINER_RUNTIME_ENDPOINT
和IMAGE_SERVICE_ENDPOINT
环境变量。 - 在配置文件
/etc/crictl.yaml
中设置端点。要指定不同的文件,请在运行crictl
时使用--config=PATH_TO_FILE
标志。
注意
如果您未设置端点,crictl
会尝试连接到已知端点的列表,这可能会影响性能。您还可以在连接到服务器时指定超时值,并通过在配置文件中指定 timeout
或 debug
值或使用 --timeout
和 --debug
命令行标志来启用或禁用调试。
要查看或编辑当前配置,请查看或编辑 /etc/crictl.yaml
的内容。例如,使用 containerd
容器运行时时的配置将类似于以下内容
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: true
要了解有关 crictl
的更多信息,请参阅 crictl
文档。
crictl 命令示例
以下示例显示了一些 crictl
命令和示例输出。
列出 Pod
列出所有 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
按名称列出 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 --label run=nginx
输出类似于以下内容
POD ID CREATED STATE NAME NAMESPACE ATTEMPT
4dccb216c4adb 2 minutes ago Ready nginx-65899c769f-wv2gp default 0
列出镜像
列出所有镜像
crictl images
输出类似于以下内容
IMAGE TAG IMAGE ID SIZE
busybox latest 8c811b4aec35f 1.15MB
k8s-gcrio.azureedge.net/hyperkube-amd64 v1.10.3 e179bbfe5d238 665MB
k8s-gcrio.azureedge.net/pause-amd64 3.1 da86e6ba6ca19 742kB
nginx latest cd5239a0906a6 109MB
按仓库列出镜像
crictl images nginx
输出类似于以下内容
IMAGE TAG IMAGE ID SIZE
nginx latest cd5239a0906a6 109MB
仅列出镜像 ID
crictl images -q
输出类似于以下内容
sha256:8c811b4aec35f259572d0f79207bc0678df4c736eeec50bc9fec37ed936a472a
sha256:e179bbfe5d238de6069f3b03fccbecc3fb4f2019af741bfff1233c4d7b2970c5
sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e
sha256:cd5239a0906a6ccf0562354852fae04bc5b52d72a2aff9a871ddb6bd57553569
列出容器
列出所有容器
crictl ps -a
输出类似于以下内容
CONTAINER ID IMAGE CREATED STATE NAME ATTEMPT
1f73f2d81bf98 busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 7 minutes ago Running sh 1
9c5951df22c78 busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 8 minutes ago Exited sh 0
87d3992f84f74 nginx@sha256:d0a8828cccb73397acb0073bf34f4d7d8aa315263f1e7806bf8c55d8ac139d5f 8 minutes ago Running nginx 0
1941fb4da154f k8s-gcrio.azureedge.net/hyperkube-amd64@sha256:00d814b1f7763f4ab5be80c58e98140dfc69df107f253d7fdd714b30a714260a 18 hours ago Running kube-proxy 0
列出正在运行的容器
crictl ps
输出类似于以下内容
CONTAINER ID IMAGE CREATED STATE NAME ATTEMPT
1f73f2d81bf98 busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 6 minutes ago Running sh 1
87d3992f84f74 nginx@sha256:d0a8828cccb73397acb0073bf34f4d7d8aa315263f1e7806bf8c55d8ac139d5f 7 minutes ago Running nginx 0
1941fb4da154f k8s-gcrio.azureedge.net/hyperkube-amd64@sha256:00d814b1f7763f4ab5be80c58e98140dfc69df107f253d7fdd714b30a714260a 17 hours ago Running kube-proxy 0
在正在运行的容器中执行命令
crictl exec -i -t 1f73f2d81bf98 ls
输出类似于以下内容
bin dev etc home proc root sys tmp usr var
获取容器的日志
获取所有容器日志
crictl logs 87d3992f84f74
输出类似于以下内容
10.240.0.96 - - [06/Jun/2018:02:45:49 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
10.240.0.96 - - [06/Jun/2018:02:45:50 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
10.240.0.96 - - [06/Jun/2018:02:45:51 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
仅获取最新的 N
行日志
crictl logs --tail=1 87d3992f84f74
输出类似于以下内容
10.240.0.96 - - [06/Jun/2018:02:45:51 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
下一步
上次修改时间:2024 年 9 月 17 日 上午 11:57 PST:从 crictl 文档中删除已弃用的部分 (ed8f1d69de)