kubernetes客户端crictl命令
crictl
是一个命令行工具,用于与容器运行时接口(CRI)兼容的容器运行时(如 containerd 和 CRI-O)进行交互。crictl
提供了许多有用的命令来管理容器、镜像和 sandboxes。
官方仓库地址:
参考资料:
- cri-tools/docs/crictl.md at master · kubernetes-sigs/cri-tools (github.com)
- 使用 crictl 对 Kubernetes 节点进行调试 | Kubernetes
1. 安装 crictl
cri-tools项目包括crictl和critest两个工具。下面是兼容性矩阵:
Kubernetes Version | cri-tools Version | cri-tools branch |
---|---|---|
≥ 1.27.x | ≥ 1.27.x | master |
≥ 1.16.x ≤ 1.26.x | ≥ 1.16.x ≤ 1.26.x | master |
1.15.X | v1.15.0 | release-1.15 |
1.14.X | v1.14.0 | release-1.14 |
1.13.X | v1.13.0 | release-1.13 |
1.12.X | v1.12.0 | release-1.12 |
1.11.X | v1.11.1 | release-1.11 |
1.10.X | v1.0.0-beta.2 | release-1.10 |
1.9.X | v1.0.0-alpha.1 | release-1.9 |
1.8.X | v0.2 | release-1.8 |
1.7.X | v0.1 | release-1.7 |
一般情况下安装完成k8s后,会同步安装crictl。如果没有安装crictl工具,可以参考如下步骤手动安装:
- 下载
crictl
的二进制文件:
在Releases · kubernetes-sigs/cri-tools (github.com)查看版本列表,以下载安装v1.28.0版本为例:
VERSION="v1.28.0"
# 使用wget
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
# 使用curl
curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz
- 解压并将二进制文件移动到系统路径:
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
- 验证安装是否成功:
crictl --version
2. 配置 crictl
crictl
在linux下默认会连接:
unix:///run/containerd/containerd.sock
orunix:///run/crio/crio.sock
orunix:///var/run/cri-dockerd.sock
在windows下默认会连接:
npipe:./pipe/containerd-containerd
ornpipe:./pipe/cri-dockerd
其他运行时:
- frakti:
unix:///var/run/frakti.sock
可以用以下方法之一来为 crictl
设置端点:
- 设置参数
--runtime-endpoint
和--image-endpoint
。 - 设置环境变量
CONTAINER_RUNTIME_ENDPOINT
和IMAGE_SERVICE_ENDPOINT
。 - 在默认配置文件
--config=/etc/crictl.yaml
中设置端点。 要设置不同的文件,可以在运行crictl
时使用--config=PATH_TO_FILE
标志。
这里采用配置文件方法,一劳永逸。默认配置文件路径是 /etc/crictl.yaml
,使用containerd
容器运行时,配置示例如下:
linux:
$ cat /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: true
pull-image-on-create: false
windows:
C:\> type %USERPROFILE%\.crictl\crictl.yaml
runtime-endpoint: npipe:./pipe/containerd-containerd
image-endpoint: npipe:./pipe/containerd-containerd
timeout: 2
debug: true