Kubernetes容器运行位置排查:单节点Rancher集群Docker显示异常
问题解答
Rancher没"隐藏"什么,只是换了容器运行时
你看到的现象不是Rancher故意隐藏,而是这个集群默认用containerd而非Docker作为容器运行时。Rancher管理的集群(比如K3s、RKE2版本)默认会使用containerd来托管K8s Pod,Docker daemon只用来运行Rancher自身的容器,所以你用docker ps看不到K8s的Pod容器。
访问Pod容器上下文的几种方式
1. 用containerd自带工具查看/操作容器
节点上已经内置了ctr命令(containerd的客户端工具),直接用它查看K8s的Pod容器:
- 查看所有K8s命名空间下的容器:
ctr -n k8s.io containers list - 查看容器的详细信息:
ctr -n k8s.io containers info <container-id> - 进入容器执行命令(类似
docker exec):ctr -n k8s.io tasks exec -t --exec-id <任意标识> <container-id> /bin/bash
2. 用K8s原生工具操作Pod(推荐)
不需要登录节点,直接用kubectl在集群层面操作Pod,这是K8s运维的标准方式:
- 进入指定Pod的shell:
kubectl exec -it <pod-name> -- /bin/bash - 查看Pod的日志:
kubectl logs <pod-name> - 复制文件到/从Pod:
kubectl cp <本地文件路径> <pod-name>:<容器内路径> kubectl cp <pod-name>:<容器内路径> <本地文件路径>
3. 确认集群运行时类型(可选)
如果想确认集群用的是哪种容器运行时,执行以下命令:
kubectl get node node-1 -o jsonpath='{.status.nodeInfo.containerRuntimeVersion}'
输出会显示类似containerd://1.6.8的信息,明确运行时类型。
内容的提问来源于stack exchange,提问作者beatrice
相关产品推荐
相关产品推荐

