Crictl安装与使用
1、介绍
crictl
是 CRI 兼容的容器运行时命令行接口。 可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序。
2、安装
2.1 使用yum安装
安装containerd.io
软件包就自带了crictl
命令
1 | yum install -y yum-utils |
2.2 使用二进制包
在github下载安装包:https://github.com/kubernetes-sigs/cri-tools/releases/tag/v1.21.0
1 | VERSION="v1.21.0" |
3、设置配置文件
3.1 配置文件
crictl
默认连接到 unix:///var/run/dockershim.sock
。 对于其他的运行时,可以用多种不同的方法设置端点:
- 通过设置参数
--runtime-endpoint
和--image-endpoint
- 通过设置环境变量
CONTAINER_RUNTIME_ENDPOINT
和IMAGE_SERVICE_ENDPOINT
- 通过在配置文件中设置端点
--config=/etc/crictl.yaml
还可以在连接到服务器并启用或禁用调试时指定超时值,方法是在配置文件中指定 timeout
或 debug
值,或者使用 --timeout
和 --debug
命令行参数。
1 | cat >> /etc/crictl.yaml << EOF #这里使用containerd |
3.2 命令行
使用crictl config命令获取并设置crictl客户端配置选项
1 | crictl config [command options] [<crictl options>] |
例如,crictl config --set debug=true
在提供后续crictl命令时将启用调试模式。
可选选项:
1 | runtime-endpoint: Container runtime endpoint |
选项:
1 | --get value show the option value |
启用后,
pull-image-on-create
将修改create container命令以首先拉出容器的映像。此功能用作帮助使创建容器更容易,更快的助手。crictl
可能希望不要提取创建容器所需的图像。例如,图像可能已经被拉出或以其他方式加载到容器运行时中,或者用户可能在没有网络的情况下运行。因此,默认值forpull-image-on-create
为false。
默认情况下,运行命令首先提取容器映像,并且
disable-pull-on-run
为false。的某些用户crictl
可能希望将其设置disable-pull-on-run
为true,以在使用run命令时默认情况下不拉取图像。
要覆盖这些默认的拉取配置设置,
--no-pull
并--with-pull
为create和run命令提供了选项。
4、用法
1 | crictl [全局选项]命令[命令选项] [参数...] |
指令:
attach
:附加到正在运行的容器create
:创建一个新的容器exec
:在正在运行的容器中运行命令version
:显示运行时版本信息images
:列出镜像inspect
:显示一个或多个容器的状态inspecti
:返回一个或多个镜像的状态imagefsinfo
:返回镜像文件系统信息inspectp
:显示一个或多个pods的状态logs
:获取容器的日志port-forward
:将本地端口转发到Podps
:列出容器pull
:从镜像库拉取镜像runp
:运行一个新的podrm
:删除一个或多个容器rmi
:删除一个或多个镜像rmp
:删除一个或多个podpods
:列出podsstart
:启动一个或多个已创建的容器info
:显示容器运行时的信息stop
:停止一个或多个运行中的容器stopp
:停止一个或多个正在运行的Podupdate
:更新一个或多个正在运行的容器config
:获取并设置crictl客户端配置选项stats
:列出容器资源使用情况统计信息completion
:输出bash shell完成代码help, h
:显示命令列表或一个命令的帮助
其他指令:
--timeout
,-t
:连接服务器的超时时间(以秒为单位)(默认值:10s)。0或更少将被解释为未设置并转换为默认值。没有设置超时值的选项,支持的最小超时为1s
--debug
,-D
:启用调试输出--help
,-h
:显示帮助--version
,-v
:打印crictl的版本信息--config
,-c
:客户端配置文件的位置。如果未指定并且默认目录不存在,则也会搜索该程序的目录(默认目录:“ / etc / crictl.yaml”)[$ CRI_CONFIG_FILE]
5、创建pod报错
1 | [root@node2 ~]# cat pod-config.json |
报错原因:calico daemonset监视apiserver以获取Pod列表,并根据Pod规范应用网络配置。自己使用沙盒,则apiserver上将没有相应的Pod,因此calico报告该错误。不建议用户运行crictl runs
和crictl create
一个Kubernetes节点上,这些命令在那里只是一些特殊的调试情况。即使您能够创建沙箱,kubelet
也将最终停止并删除它,因为它在apiserver上看不到相应的pod。