Minikube环境下default命名空间有运行Pod但查询不到Deployment资源
Kubernetes集群存在运行Pod但无对应Deployment的原因
在Kubernetes体系中,Pod是最小的调度单元,它的创建方式不唯一,并非所有Pod都由Deployment管理,该现象常见原因如下:
- Pod为直接创建的裸Pod:未关联任何上层工作负载,比如直接通过
kubectl run <pod名> --image=<镜像名>命令创建,或者直接提交Pod的YAML配置文件部署,这类Pod没有对应的控制器资源,自然查询不到Deployment。 - Pod由其他类型的工作负载管理:除了Deployment外,StatefulSet、DaemonSet、Job、CronJob、ReplicaSet都可以直接管理Pod,如果你是通过上述类型的资源部署的应用,查询Deployment自然返回空结果。
- Deployment被指定部署到了其他命名空间:默认
kubectl get deployments只查询default命名空间的资源,如果部署时指定了其他命名空间,就会出现当前现象,你可以执行kubectl get deployments -A查询所有命名空间的Deployment确认。 - Deployment已被级联孤儿删除:如果你之前确实创建过对应Deployment,但删除时使用了
--cascade=orphan参数,该参数会仅删除Deployment本身,保留它所管理的ReplicaSet和Pod,也会出现Pod仍在运行但无对应Deployment的情况。
你可以执行kubectl describe pod <Pod名称> -n default,查看输出中的Controlled By字段,即可直接确认该Pod的上层控制器类型,定位具体原因。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

