☸️ Как обновить работающий под Kubernetes

by itisgood

Работающий под Кубера не нужно гасить, чтобы его переделать.

Используя опцию patch, добавить новый контейнер в под довольно просто.

Kubernetes – один из самых мощных и гибких менеджеров контейнерных кластеров на рынке облачных технологий.

С помощью этого инструмента вы можете делать практически все, что вам нужно.

Одна из таких возможностей, которую предлагает Kubernetes, – это возможность исправления уже развернутого пода.

Скажем, например, у вас есть развернутый модуль, который включает в себя контейнер NGINX, но вы хотите позже добавить контейнеры redis и MySQL в эту смесь.

Вместо того чтобы тушить все и переоснащать ваши файлы конфигурации, вы можете просто запустить команду patch, чтобы добавить новые контейнеры.

Я собираюсь показать вам, как это сделать.

Хотя этот пример будет довольно элементарным, он продемонстрирует, как работает опция patch с командой kubectl.

Что вам нужно

Единственное, что вам нужно для этой работы – это работающий кластер Kubernetes.

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

Как развернуть сервис Kubernetes

Первое, что нам нужно сделать, это развернуть сервис Kubernetes.

Создайте новый каталог с помощью команды:

mkdir ~/patch-demo

Перейдите в этот новый каталог с помощью команды:

cd ~/patch-demo

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

Создайте этот файл с помощью команды:

nano deployment-patch.yaml

Вставьте следующее содержимое:

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: patch-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: patch-demo-ctr
        image: nginx
      tolerations:
      - effect: NoSchedule
        key: dedicated
        value: test-team
Сохраните и закройте файл.
Разверните эту конфигурацию с помощью команды:
kubectl apply -f deployment-patch.yaml

Теперь вы можете увидеть, что этот под запущен, выполнив команду:

kubectl get pods

Демо-версия патча будет указана как работающая сущность:

 

Как обновить работающий сервис

Теперь мы собираемся создать файл патча стратегического слияния, который добавит контейнер redis в наш под.

Создайте файл патча с помощью команды:

nano patch-file.yaml

В этот файл вставьте следующее:

spec:
  template:
    spec:
      containers:
      - name: patch-demo-ctr-2
        image: redis

Сохраните и закройте файл.

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

kubectl patch deployment patch-demo --patch "$(cat patch-file.yaml)"

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

Вы могли бы продолжить это дело.

Скажем, например, вы хотели добавить еще MySQL.

Создайте другой файл патча с помощью команды:

nano patch-file-2.yaml

В этот файл вставьте следующее:

spec:
  template:
    spec:
      containers:
      - name: patch-demo-ctr-3
        image: mysql

Сохраните и закройте файл и повторно запустите команду patch следующим образом:

kubectl patch deployment patch-demo --patch "$(cat patch-file-2.yaml)"

Если вы выполните команду:

kubectl get deployment patch-demo --output yaml
Вы увидите, что ngxin, redis и mysql находятся в одном поде
Еще одна вещь, которую вы не можете сделать с этой системой, – это увеличить количество реплик для модуля.
Для этого вы должны использовать команду scale следующим образом:
kubectl scale --replicas=4 deployment patch-demo
Или вы можете удалить под, уменьшив кло-во его реплик до нуля следующим образом:
kubectl scale --replicas=0 deployment patch-demo
И это все, что нужно для исправления работающей службы Kubernetes.
Хотя это очень базовый учебник, вы обнаружите, что с помощью команды patch вы можете делать почти безграничное количество вещей.

You may also like

Leave a Comment