我们已经创建了部署,该部署又创建了pod。 我需要获取由部署文件创建的Pod名称。
kubectl get -f deployment.yml
以上命令列出了部署名称。如果我输入kubectl get pod
,则会显示Pod名称,其中包含一些随机的额外字符串以及部署名称。
即使我使用-o json
选项仍然无法获得广告连播名称。
如何获得部署创建的所有Pod?即使是Shell脚本方式也没问题。
我的部署文件如下
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
ansible: test-2020-05-26-00-04-1590476651
podRef: pod-ansibles
name: rd-2020-05-26-00-04-1590476651
spec:
replicas: 2
selector:
matchLabels:
app: nginx
strategy:
type: Recreate
template:
metadata:
labels:
app: nginx
...
....
那么我有什么办法可以获取所有带有部署标签'test-2020-05-26-00-04-1590476651'的吊舱?
当我尝试'kubectl get pod -l ansible=test-2020-05-26-00-04-1590476651'
时。它显示
'No resources found in default namespace.'
似乎只能显示部署名称'kubectl get deploy -l ansible=test-2020-05-26-00-04-1590476651'
但是我需要所有正在部署的Pod名称。
答案 0 :(得分:3)
通常,我们标记部署的吊舱。
template:
metadata:
labels:
app: my-app
因此,我们可以按标签获取所有广告连播过滤器
kubectl get pod -l app=my-app
答案 1 :(得分:1)
由Kubernetes控制器创建的所有Pod在Pod的名称中都有其最大所有者的名称。对于由ReplicaSet创建的,由Deployment创建的pod,它看起来像:
PodName = ReplicaSetName-PodHash
ReplicaSet名称又遵循相同的规则:
ReplicaSetName = DeploymentName-ReplicaSetHash
“展开的”广告连播的名称如下:
PodName = DeploymentName-ReplicaSetHash-PodHash
Kubernetes要求在同一名称空间中的所有相同类型的资源都具有不同的名称。
因此,要使用kubectl获取由您的部署创建的Pod,我们可以使用grep
和awk
来获取名称:
kubectl get pods -n NamespaceName | grep "DeploymentName" | awk '{print $1}'
例如:
kubectl get pods -n default | grep "rd-2020-05-26-00-04-1590476651" | awk '{print $1}'
# or just awk
kubectl get pods -n default | awk '/rd-2020-05-26-00-04-1590476651/{print $1}'