Kubernetes(k8s)中命令行查看Pod所属控制器之方法总结_如何查看pod 的控制器。
在Kubernetes中,可以通过以下方法查看Pod所属的控制器:
方法1:使用 kubectl describe pod命令
kubectl describe pod 
Events: Type Reason Age From  Message ---- ------ ---- ----  ------- Normal Scheduled 10m default-scheduler Successfully assigned default/nginx-pod to node-1 Normal Pulling 9m59s kubelet Pulling image \"nginx:1.17.1\" ... # 控制器信息可能显示在此处
方法2:通过Pod的元数据(YAML格式)
kubectl get pod  -o yaml
在输出中查找 ownerReferences部分,会明确标注控制器类型和名称:
metadata: ownerReferences: - apiVersion: apps/v1 kind: Deployment # 控制器类型 name: Web-deploy # 控制器名称 uid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx controller: true blockOwnerDeletion: true
方法3:通过标签匹配
Pod的标签(Labels)会与控制器的标签选择器(Selector)匹配。例如:
1)查看Pod的标签:
kubectl get pod  --show-labels
2)根据标签查找对应的控制器(以Deployment为例)
kubectl get deployments.apps -l =
方法4:使用 kubectl api-resources 和 kubectl get 组合查询
如果你不确定 Pod 是由哪种类型的控制器管理的,可以先列出所有支持的资源类型:
kubectl api-resources --namespaced=true 
然后,你可以根据输出的资源类型(如 Deployment, StatefulSet 等),使用以下命令来查找管理特定 Pod 的控制器:
kubectl get deployments --all-namespaces -o wide | grep 
或者对于其他类型的控制器,如 StatefulSet:
kubectl get statefulsets --all-namespaces -o wide | grep 
补充说明:
- 
Deployment管理的Pod:会显示
Deployment类型,并通过ReplicaSet间接管理 - 
StatefulSet管理的Pod:名称通常包含序号(如
web-0),且通过Headless Service关联 - 
DaemonSet管理的Pod:每个节点运行一个Pod,可通过
kubectl get daemonset验 - 
如果Pod无控制器(如自主式Pod),则
ownerReferences字段为空。 


