crictl调试Kubernetes节点

本文介绍了TKE中使用containerd模式的集群常用的crictl命令

开始之前

crictl需要一个具有CRI运行时的Linux操作系统,直接在TKE中创建containerd模式的集群既可。

安装crictl

你可以从critools发布页面下载一个压缩的存档crictl,用于几种不同的体系构架。下载与Kubernetes版本对应的版本。解压并将其移动到系统路径上的一个位置,例如/usr/local/bin/。

一般用法

crictl命令有几个子命令和运行时选项。有关详细信息,请使用crictl help或crictl help。

crictl默认连接到 unix:///var/run/dockershim.sock。对于其它运行时,你可以通过多种方式设置端点:

  • 设置 --runtime-endpoint 和--image-endpoint选项。

  • 设置 CONTAINER_RUNTIME_ENDPOINT 和IMAGE_SERVICE_ENDPOINT环境变量。

  • 在配置文件 --config=/etc/crictl.yaml设置端点。

还可以在连接到服务器时指定超时值,并启用或禁用调试,方法是在配置文件中指定 timeout 和debug 值,或者使用--timeout和--debug命令行选项。 要查看或编辑当前配置,请查看或编辑/etc/crictl.yaml的内容

cat /etc/crictl.yamlruntime-endpoint: unix:///var/run/dockershim.sockimage-endpoint: unix:///var/run/dockershim.socktimeout: 10debug: true

crictl命令示例

下面的示例显示了crictl命令和示例输出。

警告:如果你使用crictl在运行的Kubernetes集群上创建pod沙箱或容器,Kubelet最终将删除它们。crictl不是一个通用的工作流工具,而是一个对调试有用的工具。

获取pod列表

获取所有pod列表:

根据名称获取pod列表:

获取镜像列表

获取所有镜像列表:

根据仓库获取镜像列表:

只列出镜像ID:

获取容器列表

获取所有容器列表:

在运行的容器中执行命令

输出容器日志

获取所有容器日志:

只获取最近的N行日志:

运行pod沙箱

使用crictl运行pod沙箱对于调试容器运行时非常有用。在运行的Kubernetes集群上,沙箱最终将被Kubelet停止和删除。

创建一个如下内容的JSON文件:

使用crictl runp命令应用JSON并运行沙箱。

返回了沙箱ID。

创建容器

使用crictl创建容器对于调试容器运行时非常有用。在运行的Kubernetes集群上,沙箱最终将被Kubelet停止和删除。

拉取沙箱镜像:

为pod和容器创建配置:

pod配置:

传递前面创建的pod、容器配置文件和pod配置文件的ID来创建容器。随即返回了容器的ID。

列出所有容器,并验证新创建的容器是否将其状态设置为Created。

启动容器

要启动容器,请将其ID传递给 crictl start:

检查容器是否将其状态设置为Running。

最后更新于

这有帮助吗?