Почему ярлыки упоминаются три раза в одном развертывании - PullRequest
0 голосов
/ 30 января 2019

Я просмотрел следующую страницу документации: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

Пример развертывания yaml выглядит следующим образом:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

Здесь мы видим три разных раза, когда метка app: nginx упоминается.

Зачем нам каждый из них?Мне было трудно понять это из официальной документации.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

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

kubectl delete deployment -l app=nginx

Это удалит все развертывание.

вторая метка равна selector: matchLabels, чтосообщает ресурсам (сервису и т. д.) о соответствии пакета согласно метке.Допустим, если вы хотите создать службу, в которой все модули имеют метки app=nginx, тогда вы предоставите следующее определение:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer
  ports:
    - port:  80
  selector:
    app: nginx

Приведенный выше сервис будет искать модули matchLabels и bind, имеющие меткуapp: nginx присвоено им

третья метка - это podTemplate метки, template на самом деле podTemplate.Он описывает модуль, который запускается.Допустим, у вас есть две развёрнутые реплики, и k8s запустит 2 модуля с меткой, указанной в template: metadata: labels.Это тонкое, но важное отличие, поэтому у вас могут быть разные метки для развертывания и модули, сгенерированные этим развертыванием.

0 голосов
/ 30 января 2019

Первая метка:

Это метка развертывания, которая используется для выбора развертывания.Вы можете использовать приведенную ниже команду, используя первую метку:

kubectl get deployment -l app=nginx

Вторая метка:

Это не метка.Это селектор меток для выбора модуля с метками nginx.Он используется ReplicaSet.

Третий ярлык:

Это ярлык для идентификации бобов.Он используется ReplicaSet для поддержания желаемого количества реплик, и для этого используется селектор меток.Также он используется для выбора модуля с помощью следующей команды:

kubectl get pods -l app=nginx
...