Как получить имена модулей из развертывания? - PullRequest
0 голосов
/ 29 мая 2020

Мы создали развертывания, которые, в свою очередь, создают под. Мне нужно получить имена модулей, созданные моим файлом развертывания.

kubectl get -f deployment.yml

В приведенной выше команде перечислены имена развертывания. Если я наберу kubectl get pod, отобразятся имена модулей, в которые добавлены случайные дополнительные строки с именами развертывания.

Даже если я использую опцию -o json, все равно не удается получить имена модулей.

Как получить все модули, созданные путем развертывания? Подойдет даже сценарий оболочки.

мой файл развертывания выглядит ниже

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'

Но мне нужны все имена модулей, которые находятся в развертывании ..

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

Обычно мы маркируем модули развертывания.

  template:
    metadata:
      labels:
        app: my-app

Итак, мы можем получить фильтр всех модулей по метке

kubectl get pod -l app=my-app
1 голос
/ 29 июля 2020

Все поды, созданные контроллером Kubernetes, имеют имя верхнего владельца в имени подов. Для модулей, созданных с помощью ReplicaSet, созданных с помощью развертывания, это будет выглядеть так:

PodName = ReplicaSetName-PodHash

Имя ReplicaSet, в свою очередь, подчиняется тому же правилу:

ReplicaSetName = DeploymentName-ReplicaSetHash

Имя «развернутого» модуля будет выглядеть например:

PodName = DeploymentName-ReplicaSetHash-PodHash

Kubernetes требует, чтобы все ресурсы одного типа в одном пространстве имен имели разные имена.

Итак, чтобы получить поды, созданные вашим развертыванием с помощью kubectl, мы могли бы использовать 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}'
...