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

Как создать набор реплик в Kubernetes


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

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

Набор реплик обеспечивает постоянную работу указанных реплик модулей. Его можно рассматривать как замену контроллеру репликации. Основное различие между ними заключается в том, что наборы реплик позволяют нам использовать нечто, называемое \Селектор меток. Набор реплик — это один из контроллеров Kubernetes. Он используется для проверки наличия определенного количества модулей реплики, которые всегда работают.

Шаблон набора реплик выглядит следующим образом.

apiVersion: apps/v1 
kind: ReplicaSet   
Metadata: 
  name: some-name
  labels:
    app: some-App
    tier: some-Tier
Spec: 
  replicas: 3 # Here we tell k8s how many replicas we want
  Selector: # A label selector field. 
    matchLabels:
      tier: some-Tier
    matchExpressions:
      - {key: tier, operator: In, values: [some-Tier]} #set-based operators
  template:
    metadata:
      labels:
        app: some-App
        tier: someTier
    Spec: 
      Containers:

В этой статье мы увидим, как создать набор реплик и как он идентифицирует модули с помощью меток.

Предпосылки

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

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

  • Создание набора реплик

Создайте набор реплик

Создайте новый файл и добавьте в него следующее определение набора реплик.

vim my-replica-set.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-proxy
  labels:
    app: nginx-proxy
    tier: frontend
spec:
  # modify replicas according to your case
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: nginx
        image: nginx

Приведенное выше определение объекта создаст три реплики модуля.

Сначала проверьте существующий набор реплик с помощью следующей команды.

kubectl get replicaset

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

kubectl create -f my-replica-set.yml
kubectl get replicaset
kubectl get pods

На приведенном выше снимке экрана вы можете увидеть детали прудов, созданных после создания набора реплик.

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

vim my-test-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    tier: frontend
spec:
  containers:
  - name: nginx
    image: nginx

Теперь, если мы создадим это, оно не будет создано.

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

kubectl get pods
kubectl create -f my-test-pod.yml
kubectl get pods

На приведенном выше снимке экрана видно, что даже после создания нового модуля он находится в завершающем состоянии. Причина этого в том, что у нас уже есть набор реплик с репликами, равными 3, и мы создаем новый модуль отдельно с теми же ярлыками. Поскольку метки и селекторы соответствуют набору реплик, он удаляет модуль, чтобы сохранить указанное количество реплик, которое мы указали в определении набора реплик.

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

kubectl get replicaset
kubectl describe replicaset nginx-proxy

На приведенном выше снимке экрана видно, что набор реплик удаляет модуль, чтобы сохранить количество реплик.

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

vim my-test-pod-no-label.yml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: nginx
    image: nginx

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

kubectl get pods
kubectl create -f my-test-pod-no-label.yml
kubectl get pods

На приведенном выше снимке экрана видно, что новый модуль был создан, и на этот раз набор реплик не удалил новый модуль.

Причина этого в том, что новый порт не имеет метки, поэтому набор реплик не соответствует ему и не считает его частью набора реплик.

Теперь давайте попробуем создать порт, принадлежащий набору реплик.

Выполните следующие команды, чтобы удалить модуль.

kubectl get pods
kubectl delete pod nginx-proxy-6gc46
kubectl get pods

На приведенном выше снимке экрана видно, что даже после удаления модуля, принадлежащего набору реплик, создается новый модуль. Был создан новый модуль для поддержки количества реплик, которое мы указали в определении набора реплик.

Теперь, когда вам больше не нужен набор реплик, его можно удалить с помощью следующих команд.

kubectl get replicaset
kubectl delete replicaset nginx-proxy
kubectl get replicaset
kubectl get pods

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

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

kubectl get pods
kubectl delete pod pod1
kubectl get pods

Заключение

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