如何从部署中获取 pod 名称?
How to get pod names from deployment?
我们创建了部署,部署又创建了 pod。
我需要获取由我的部署文件创建的 Pod 名称。
kubectl get -f deployment.yml
以上命令列出部署名称。如果我键入 kubectl get pod
,它会显示 Pod 名称,其中添加了一些随机的额外字符串和部署名称。
即使我使用 -o json
选项仍然无法获取 pod 名称。
如何获取部署创建的所有pods?即使是 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' 的 pods 吗?
当我尝试 '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 名称..
通常,我们标记部署的 pods。
template:
metadata:
labels:
app: my-app
因此,我们可以通过标签获取所有 pod 过滤器
kubectl get pod -l app=my-app
所有由 Kubernetes 控制器创建的 pods 在 Pods 的名称中都有其最高所有者的名称。对于由 ReplicaSet 创建的 pods,由 Deployment 创建的它看起来像:
PodName = ReplicaSetName-PodHash
ReplicaSet 名称依次遵循相同的规则:
ReplicaSetName = DeploymentName-ReplicaSetHash
“展开”Pod 的名称如下所示:
PodName = DeploymentName-ReplicaSetHash-PodHash
Kubernetes 要求同一命名空间中的所有同类资源具有不同的名称。
因此,要获取部署使用 kubectl 创建的 pods,我们可以使用 grep
和 awk
来获取名称:
kubectl get pods -n NamespaceName | grep "DeploymentName" | awk '{print }'
例如:
kubectl get pods -n default | grep "rd-2020-05-26-00-04-1590476651" | awk '{print }'
# or just awk
kubectl get pods -n default | awk '/rd-2020-05-26-00-04-1590476651/{print }'
我们创建了部署,部署又创建了 pod。 我需要获取由我的部署文件创建的 Pod 名称。
kubectl get -f deployment.yml
以上命令列出部署名称。如果我键入 kubectl get pod
,它会显示 Pod 名称,其中添加了一些随机的额外字符串和部署名称。
即使我使用 -o json
选项仍然无法获取 pod 名称。
如何获取部署创建的所有pods?即使是 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' 的 pods 吗?
当我尝试 '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 名称..
通常,我们标记部署的 pods。
template:
metadata:
labels:
app: my-app
因此,我们可以通过标签获取所有 pod 过滤器
kubectl get pod -l app=my-app
所有由 Kubernetes 控制器创建的 pods 在 Pods 的名称中都有其最高所有者的名称。对于由 ReplicaSet 创建的 pods,由 Deployment 创建的它看起来像:
PodName = ReplicaSetName-PodHash
ReplicaSet 名称依次遵循相同的规则:
ReplicaSetName = DeploymentName-ReplicaSetHash
“展开”Pod 的名称如下所示:
PodName = DeploymentName-ReplicaSetHash-PodHash
Kubernetes 要求同一命名空间中的所有同类资源具有不同的名称。
因此,要获取部署使用 kubectl 创建的 pods,我们可以使用 grep
和 awk
来获取名称:
kubectl get pods -n NamespaceName | grep "DeploymentName" | awk '{print }'
例如:
kubectl get pods -n default | grep "rd-2020-05-26-00-04-1590476651" | awk '{print }'
# or just awk
kubectl get pods -n default | awk '/rd-2020-05-26-00-04-1590476651/{print }'