使用crictl工具管理
# 下载地址 如果环境安装K8S不需要单独安装
VERSION="v1.26.0" # check latest version in /releases page
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
# 解压
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz
# 配置文件
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: false
pull-image-on-create: false
EOF
# 生效配置
systemctl daemon-reload
命令介绍
同docker对比介绍
docker |
crictl |
描述 |
docker ps |
crictl ps |
查看容器列表 |
docker inspect |
crictl inspect |
查看容器详情 |
docker logs |
crictl log |
查看容器日志 |
docker exec |
crictl exec |
容器内执行命令 |
docker create |
crictl create |
创建容器 |
docker start |
crictl start |
启动容器 |
docker stop |
crictl stop |
停止容器 |
docker rm |
crictl rm |
删除容器 |
docker attach |
crictl attach |
挂载容器 |
docker stats |
crictl stats |
显示容器情况 |
docker pull |
crictl pull |
拉取镜像 |
docker push |
无 |
推送镜像 |
docker rmi |
crictl rmi |
删除镜像 |
docker images |
crictl images |
查看镜像列表 |
docker inspect |
crictl inspecti |
镜像详细 |
docker load |
无 |
导入 |
docker save |
无 |
导出 |
无 |
crictl pods |
Pod列表 |
无 |
crictl inspectp |
Pod详细 |
无 |
crictl runp |
启动pod |
无 |
crictl stop |
停止pod |
对于ctr和crictl使用注意的地方
crictl 是遵循 CRI 接口规范的一个命令行工具,一般用它来检查和管理kubelet节点上的容器运行时和镜像。
ctr 是 containerd 的一个客户端工具。
ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,
你可以认为 crictl 是用于 k8s 的,但是由于ctr命令用着不放面,索引推荐使用crictl
ctr客户端 主要区分了3个命名空间分别是k8s.io、moby和default,
我们用crictl操作的均在k8s.io命名空间,
ctr images pull 拉取的镜像默认放在default,而crictl pull 和 kubelet 默认拉取的镜像都在 k8s.io 命名空间下。所以通过ctr导入镜像的时候特别注意一点,最好指定命名空间。
如果不使用k8s,只使用容器又想有类似于docker的完整功能,推荐使用nerdctl工具取代ctr。
使用crictl报错
crictl执行命令报如下错,基本就是缺少配置文件那步。
crictl ps -a
WARN[0000] runtime connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
ERRO[0000] validate service connection: validate CRI v1 runtime API for endpoint "unix:///var/run/dockershim.sock": rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial unix /var/run/dockershim.sock: connect: no such file or directory"
WARN[0000] image connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
ERRO[0000] validate service connection: validate CRI v1 image API for endpoint "unix:///var/run/dockershim.sock": rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial unix /var/run/dockershim.sock: connect: no such file or directory"
暂无评论内容