天翼云(CTYun)的 Kubernetes 节点默认使用 containerd 作为容器运行时,没有
docker命令。进入容器要使用crictl(CRI 工具),这是 containerd 生态的标准方式。
1. 列出 Pods
crictl pods
输出示例:
POD ID CREATED STATE NAME NAMESPACE ATTEMPT
9c8e7d5f4a1b About an hour ago Running mdm-nginx-6c56d77877-6gr6r default 0
...
2. 找对应的 mdm-nginx 容器的具体 ID
crictl ps | grep mdm-nginx-6c56d77877-6gr6r
输出示例:
CONTAINER ID IMAGE CREATED STATE NAME POD ID
a1b2c3d4e5f6 harbor.example.com/mdm/nginx:v1.2 About an hour ago Running mdm-nginx 9c8e7d5f4a1b
3. 进入容器
crictl exec -it <CONTAINER_ID> sh
💡 小贴士:很多精简镜像(如 nginx、alpine)没有
bash,只有sh。如果不确定镜像 shell,用sh兼容性最高;遇到 debian/ubuntu 基础镜像,可以改成bash。
补充:常用 crictl 命令速查
| 命令 | 用途 |
|---|---|
crictl pods |
列出所有 Pod(类似 kubectl get pods,但站在节点视角) |
crictl ps |
列出所有容器(类似 docker ps) |
crictl ps -a |
包括已停止的容器(类似 docker ps -a) |
crictl images |
列出节点本地镜像(类似 docker images) |
crictl logs <CONTAINER_ID> |
看容器日志(类似 docker logs) |
crictl exec -it <ID> sh |
进入容器 |
crictl inspect <ID> |
看容器详细信息(JSON) |
crictl vs docker 速查对照
| 操作 | docker | crictl |
|---|---|---|
| 列出容器 | docker ps |
crictl ps |
| 看日志 | docker logs <ID> |
crictl logs <ID> |
| 进容器 | docker exec -it <ID> sh |
crictl exec -it <ID> sh |
| 拉镜像 | docker pull <image> |
ctr -n k8s.io images pull <image> |
| 列镜像 | docker images |
crictl images |
常见问题
| 报错 | 原因 | 修复 |
|---|---|---|
command not found: crictl |
节点没装 cri-tools | yum install -y cri-tools(CentOS)/ apt install -y cri-tools(Ubuntu) |
FATA[0000] runtime connect using endpoint |
crictl 默认找 unix:///var/run/dockershim.sock |
export CONTAINER_RUNTIME_ENDPOINT=unix:///run/containerd/containerd.sock |
| 容器里没有 bash | 镜像用 alpine/distroless | 改用 sh,或装 bash 进镜像 |
相关阅读
- K8s 证书过期更新方法 — 天翼云 K8s 节点的证书更新流程
- K8s 使用 NFS 作为容器存储插件 — 天翼云 K8s 的存储方案