【问题标题】:How to get pod names from deployment?如何从部署中获取 pod 名称?
【发布时间】:2020-07-29 22:58:50
【问题描述】:

我们创建了部署,这些部署又创建了 pod。 我需要获取我的部署文件创建的 Pod 名称。

kubectl get -f deployment.yml

上述命令列出部署名称。如果我输入 kubectl get pod 它会显示 Pod 名称,其中添加了一些随机的额外字符串和部署名称。

即使我使用 -o json 选项仍然无法获取 pod 名称。

如何获取部署创建的所有 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”的 pod 吗?

当我尝试 '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 名称..

【问题讨论】:

    标签: shell kubernetes kubernetes-pod


    【解决方案1】:

    通常,我们标记部署的 pod。

      template:
        metadata:
          labels:
            app: my-app
    

    所以,我们可以通过标签获取所有的 pod 过滤器

    kubectl get pod -l app=my-app
    

    【讨论】:

      【解决方案2】:

      Kubernetes 控制器创建的所有 Pod 都在 Pod 名称中具有其最高所有者的名称。对于由 ReplicaSet 创建、由 Deployment 创建的 pod,它看起来像:

      PodName = ReplicaSetName-PodHash
      

      ReplicaSet 名称依次遵循相同的规则:

      ReplicaSetName = DeploymentName-ReplicaSetHash
      

      “展开”Pod 的名称如下所示:

      PodName = DeploymentName-ReplicaSetHash-PodHash
      

      Kubernetes 要求同一命名空间中的所有同类资源具有不同的名称。

      因此,要使用 kubectl 获取部署创建的 pod,我们可以使用 grepawk 来获取名称:

      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}'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        • 1970-01-01
        • 2017-05-24
        • 2022-12-21
        • 1970-01-01
        • 2021-03-21
        • 2020-08-13
        相关资源
        最近更新 更多