Поиск по сайту:

Метки и селекторы в Kubernetes


На этой странице

  1. Предварительные условия
  2. Что мы будем делать
  3. Создание модуля и сервиса с ярлыками и селекторами
  4. Знакомство с ярлыками
  5. Заключение

Ярлыки — это не что иное, как пары ключ-значение, назначенные объектам Kubernetes, таким как Pods, Service и т. д. Ярлыки можно использовать для организации и выбора объектов Kubernetes. Ярлыки можно прикреплять к объектам во время создания и изменять в любое время. Мы можем добавить несколько меток к объектам Kubernetes.

Селекторы используются пользователями для выбора набора объектов. Селектор меток — это основной примитив группировки в Kubernetes. API Kubernetes поддерживает два типа селекторов.

  1. Селекторы на основе равенства.
    Это позволяет фильтровать по ключу и значению, при этом совпадающие объекты должны удовлетворять всем указанным ярлыкам.
  2. Селекторы на основе набора.
    Это позволяет фильтровать ключи в соответствии с набором значений.

Чтобы узнать больше о метках и селекторах, нажмите здесь.

В этой статье мы создадим Pod с лейблами к нему и перенаправим на него запросы от сервиса с помощью Selector. Мы также будем выполнять операции получения и удаления в поде и сервисе, используя метки/селекторы в командной строке.

Предпосылки

  1. Кластер Kubernetes с хотя бы 1 рабочим узлом.
    Если вы хотите научиться создавать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 мастером и 2 узлами на экземплярах AWS Ubuntu 18l04 EC2.

Что мы будем делать

  1. Создание модуля и сервиса с ярлыками и селектором
  2. Знакомство с ярлыками

Создайте модуль и сервис с метками и селекторами

Чтобы создать модуль с метками, создайте новый файл и добавьте в него следующее содержимое.

vim my-lable-demo-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: label-demo-pod
  labels:
    environment: test
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

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

vim my-selector-demo-service.yml
apiVersion: v1
kind: Service
metadata:
  name: selector-demo-service
  namespace: default
  labels:
environment: test app: nginx spec: externalTrafficPolicy: Local ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: NodePort

Чтобы создать Pod, выполните следующую команду.

kubectl create -f my-lable-demo-pod.yml
kubectl get pods

Чтобы создать службу, выполните следующую команду.

kubectl create -f my-selector-demo-service.yml
kubectl get service

Теперь, чтобы проверить, работает ли селектор меток, попробуйте получить доступ к службе на NodeIP:NodePort.

Здесь IP-адрес моего узла — 106.210.138.189, а служба доступна через порт = 30385.

Поскольку мы можем получить доступ к Nginx Pod с помощью созданной нами службы, это означает, что метка и селектор сработали.

Понимание ярлыков

Теперь мы можем выполнять различные операции над подом и сервисом, которые мы создали с помощью метки.

Чтобы получить поды, соответствующие метке по нашему выбору, мы можем \--selector\ в команде следующим образом.

kubectl get pods --selector environment=test
kubectl get pods --selector app=nginx

Мы также можем использовать \-l\ вместо \--selector\, чтобы получить поды, соответствующие метке по нашему выбору.

kubectl get pods -l environment=test
kubectl get pods -l environment=prod

Мы даже можем выполнить операцию удаления модуля, указав метку. Поды, соответствующие метке, можно удалить с помощью следующих команд.

kubectl get pods
kubectl delete pods -l environment=test
kubectl get pods

Как мы могли бы удалить поды, соответствующие меткам, мы также можем удалить службу.

Чтобы удалить обслуживание, соответствующее ярлыку, используйте следующую команду. Кроме того, если нет службы, соответствующей указанной в команде метке, операция удаления выполняться не будет.

kubectl get service
kubectl delete service -l environemt=test
kubectl delete service -l environment=test
kubectl get service

Заключение

В этой статье мы создали модуль с метками в нем, а также создали и указали сервис для тех модулей, которые соответствуют метке. Мы также увидели, как можно удалять модули и сервисы, соответствующие ярлыкам.