一,crictl
crictl 是 CRI 兼容的容器运行时命令行接口。 你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序。 crictl 和它的源代码在 cri-tools 代码库。
1,安装
需要下载与kubernetes相对应的版本,我的k8s版本是1.30的,因此下载1.30版本的crictl
https://github.com/kubernetes-sigs/cri-tools/releases/tag/v1.30.0
解压并复制到PATH路径
/usr/local/bin/
2,设置端点
这里以 containerd 容器运行时的配置为例
创建文件并/etc/crictl.yaml
添加以下内容:
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: true
3,常用命令:
打印所有 Pod 的清单:
crictl pods
根据名称打印Pod清单
crictl pods --name nginx-65899c769f-wv2gp
根据标签打印 Pod 清单:
crictl pods --label run=nginx
打印所有镜像清单:
crictl images
根据仓库打印镜像清单:
crictl images nginx
只打印镜像 ID:
crictl images -q
打印所有容器清单:
crictl ps -a
打印正在运行的容器清单:
crictl ps
在正在运行的容器上执行命令
crictl exec -i -t 1f73f2d81bf98 ls
获取容器的所有日志:
crictl logs 87d3992f84f74
二,ctr
ctr 是一个用于与 containerd 交互的命令行工具。containerd 是一个面向容器的守护进程,它可以管理容器生命周期、镜像、存储和网络。ctr 命令行工具提供了一种简单的方式来管理 containerd。
常用命令
列出本地镜像
sudo ctr images list
下载 Docker Hub 上的镜像
sudo ctr images pull docker.io/library/ubuntu:latest
列出所有正在运行的容器
sudo ctr containers list
启动一个容器:
sudo ctr containers start <container-name>
停止一个容器:
sudo ctr containers stop <container-name>
管理容器中运行的任务。使用以下命令列出所有正在运行的任务:
sudo ctr tasks list
查看任务的日志:
sudo ctr tasks logs <task-id>
配置containerd从搭建的私有harbor仓库拉取镜像
配置config.toml文件
生成文件config.toml.
对应的配置文件已经上传,可下载https://download.csdn.net/download/m0_62464865/90356072
sudo containerd config default >config.toml
修改对应位置内容:
[plugins."io.containerd.grpc.v1.cri".registry.configs][plugins."io.containerd.grpc.v1.cri".registry.configs."10.5.5.25:8080".tls]insecure_skip_verify = true[plugins."io.containerd.grpc.v1.cri".registry.configs."10.5.5.25:8080".auth]username = "admin"password = "Harbor12345"[plugins."io.containerd.grpc.v1.cri".registry.headers][plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]endpoint = ["https://gcr.mirrors.ustc.edu.cn"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]endpoint = ["https://gcr.mirrors.ustc.edu.cn/google-containers/"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]endpoint = ["https://quay.mirrors.ustc.edu.cn"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."10.5.5.25:8080"]endpoint = ["http://10.5.5.25:8080"]
重启containerd
sudo systemctl restart containerd.service
查看配置是否生效
containerd config dump
验证:
crictl pull image_name
这里需要注意:
如果使用ctr命令拉取镜像需要加上参数--plain-http=true
sudo ctr image pull --plain-http=true <image>