OpenShift:如何查找集群中仅含一个Pod的项目与Deployment
在OpenShift中查找单Pod的命名空间与Deployment
一、查找副本数为1的Deployment(全集群)
直接筛选所有Deployment中副本数spec.replicas为1的条目,同时展示所属命名空间:
oc get deployments --all-namespaces -o custom-columns='NAMESPACE:.metadata.namespace,DEPLOYMENT:.metadata.name,REPLICAS:.spec.replicas' | awk '$3 == 1'
命令说明:
oc get deployments --all-namespaces:获取全集群所有Deployment资源-o custom-columns:自定义输出列,仅保留命名空间、Deployment名称和副本数字段awk '$3 == 1':过滤出副本数为1的结果行
二、查找仅含1个Pod的命名空间及其中的Deployment
如果需要先定位整个命名空间内总Pod数仅为1的项目,再列出这些项目中的Deployment,可按以下步骤执行:
1. 获取总Pod数为1的命名空间列表
oc get pods --all-namespaces --no-headers | awk '{print $1}' | uniq -c | awk '$1 == 1' | awk '{print $2}'
2. 批量列出目标命名空间中的Deployment
将第一步得到的命名空间作为参数,批量查询对应的Deployment资源:
oc get pods --all-namespaces --no-headers | awk '{print $1}' | uniq -c | awk '$1 == 1' | awk '{print $2}' | xargs -I {} oc get deployments -n {} -o custom-columns='NAMESPACE:.metadata.namespace,DEPLOYMENT:.metadata.name,REPLICAS:.spec.replicas'
注意事项:
- 部分仅含1个Pod的命名空间可能没有Deployment(比如Pod为单独创建、由StatefulSet/DaemonSet管理),这类情况会输出
No resources found in <namespace> namespace. - 若需排除异常状态的Pod,可在
oc get pods后添加--field-selector=status.phase=Running,仅统计运行中的健康Pod
内容的提问来源于stack exchange,提问作者ma9811
相关产品推荐
相关产品推荐

