This the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Руководства

В данном разделе документации Kubernetes можно найти руководства. В них рассказывается, как достичь определённой цели, а не просто выполнить одну задачу. Большинство уроков состоит из нескольких разделов, каждый из которых включает в себя шаги для последовательного выполнения. Перед тем как приступить к выполнению уроков, может быть полезно ознакомиться со словарем терминов для последующих обращений.

Основы

Конфигурирование

Приложения без состояния

Приложения с состоянием

Кластеры

Сервисы

Что дальше

Если вы хотите создать руководство самостоятельно, обратитесь к странице Использование шаблонов страниц, чтобы узнать информацию и посмотреть шаблоны для составления руководств.

1 - Привет, Minikube

Это руководство покажет вам, как запустить простое Hello World Node.js приложение на Kubernetes используя Minikube и Katacoda. Katacoda предоставляет бесплатную, встроенную в браузер Kubernetes среду.

Цели

  • Разверните hello world приложение в Minikube.
  • Запустите приложение.
  • Посмотрите логи приложения.

Подготовка к работе

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

var http = require('http');

var handleRequest = function(request, response) {
  console.log('Получен запрос на URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD [ "node", "server.js" ]

Чтобы получить больше информации по запуску команды docker build, ознакомьтесь с документацией по Docker.

Создание кластера Minikube

  1. Нажмите Запуск Терминала

  2. Откройте веб-панель Kubernetes в браузере:

    minikube dashboard
    
  3. Только для окружения Katacoda: В верхней части панели нажмите знак "плюс", а затем на Select port to view on Host 1 (Выберите порт для отображения на хосте 1).

  4. Только для окружения Katacoda: введите 30000, а затем нажмите Display Port (Показать порт).

Создание Deployment

Под Kubernetes - это группа из одного или более контейнеров, связанных друг с другом с целью адмистрирования и организации сети. В данном руководстве под включает в себя один контейнер. Deployment в Kubernetes проверяет здоровье пода и перезагружает контейнер пода в случае его отказа. Deployment-ы являются рекоммендуемым способом организации создания и масштабирования подов.

  1. Используйте команду kubectl create для создание деплоймента для управления подом. Под запускает контейнер на основе предоставленного Docker образа.

    kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
    
  2. Посмотреть информацию о Deployment:

    kubectl get deployments
    

    Вывод:

    NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1         1         1            1           1m
    
  3. Посмотреть информацию о поде:

    kubectl get pods
    

    Вывод:

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  4. Посмотреть события кластера:

    kubectl get events
    
  5. Посмотреть kubectl конфигурацию:

    kubectl config view
    

Создание сервиса

По-умолчанию под доступен только при обращении по его внутреннему IP адресу внутри кластера Kubernetes. Чтобы сделать контейнер hello-node доступным вне виртульной сети Kubernetes, необходимо представить под как сервис Kubernetes.

  1. Сделать под доступным для публичной сети Интернет можно с помощью команды kubectl expose:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    

    Флаг --type=LoadBalancer показывает, что сервис должен быть виден вне кластера.

  2. Посмотреть только что созданный сервис:

    kubectl get services
    

    Вывод:

    NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
    kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
    

    Для облачных провайдеров, поддерживающих балансировщики нагрузки, для доступа к сервису будет предоставлен внешний IP адрес. В Minikube тип LoadBalancer делает сервис доступным при обращении с помощью команды minikube service.

  3. Выполните следующую команду:

    minikube service hello-node
    
  4. Только для окружения Katacoda: Нажмите на знак "Плюс", затем нажмите Select port to view on Host 1.

  5. Только для окружения Katacoda: Введите 30369 (порт указан рядом с 8080 в выводе сервиса), затем нажмите ???.

    Откроется окно браузера, в котором запущено ваше приложение и будет отображено сообщение "Hello World".

Добавление дополнений

В Minikube есть набор встроенных дополнений, которые могут быть включены, выключены и открыты в локальном окружении Kubernetes.

  1. Отобразить текущие поддерживаемые дополнения:

    minikube addons list
    

    Вывод:

    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    heapster: disabled
    helm-tiller: disabled
    ingress: disabled
    ingress-dns: disabled
    logviewer: disabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    storage-provisioner-gluster: disabled
    
  2. Включить дополнение, например, metrics-server:

    minikube addons enable metrics-server
    

    Вывод:

    metrics-server was successfully enabled
    
  3. Посмотреть Pod и Service, которые вы только что создали:

    kubectl get pod,svc -n kube-system
    

    Вывод:

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/metrics-server-67fb648c5                1/1       Running   0          26s
    pod/etcd-minikube                           1/1       Running   0          34m
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-apiserver-minikube                 1/1       Running   0          34m
    pod/kube-controller-manager-minikube        1/1       Running   0          34m
    pod/kube-proxy-rnlps                        1/1       Running   0          34m
    pod/kube-scheduler-minikube                 1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/metrics-server         ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/monitoring-grafana     NodePort    10.99.24.54     <none>        80:30002/TCP        26s
    service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>        8083/TCP,8086/TCP   26s
    
  4. Отключить metrics-server:

    minikube addons disable metrics-server
    

    Вывод:

    metrics-server was successfully disabled
    

Освобождение ресурсов

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

kubectl delete service hello-node
kubectl delete deployment hello-node

Остановите выполнение виртуальной машины Minikube (опционально):

minikube stop

Удалите виртуальную машину Minikube (опционально):

minikube delete

Что дальше

2 - Основы Kubernetes

Основы Kubernetes

В данном руководстве вы познакомитесь с основами системы оркестрации кластеров Kubernetes. Каждый модуль содержит краткую справочную информацию по основной функциональности и концепциям Kubernetes, а также включает интерактивные онлайн-уроки. С их помощью вы научитесь самостоятельно управлять простым кластером и контейнеризированными приложениями, которые были в нём развернуты.

Пройдя интерактивные уроки, вы узнаете, как:

  • развёртывать контейнеризированное приложение в кластер.
  • масштабировать развёртывание.
  • обновить контейнеризированное приложение на новую версию ПО.
  • отлаживать контейнеризированное приложение.

Все руководства используют сервис Katacoda, поэтому в вашем браузере будет показан виртуальный терминал с работающим Minikube, небольшой локальной средой Kubernetes, которая может работать где угодно. Вам не потребуется устанавливать дополнительное ПО или вообще что-либо настраивать. Каждый интерактивный урок запускается непосредственно в вашем браузере.


Чем может Kubernetes помочь вам?

От современных веб-сервисов пользователи ожидают, что приложения будут доступны 24/7, а разработчики — развёртывать новые версии приложений по нескольку раз в день. Контейнеризация направлена на достижение этой цели, упаковывая ПО и позволяя выпускать и обновлять приложения просто, быстро и без простоев. Kubernetes гарантирует вам, что ваши контейнеризованные приложения будет запущены где угодно и когда угодно, вместе со всеми необходимыми для их работы ресурсами и инструментами. Kubernetes — это готовая к промышленному использованию платформа с открытым исходным кодом, разработанная исходя из накопленного опыта Google по оркестровке контейнеров и лучшими идеями от сообщества.


2.1 - Создание кластера

2.1.1 - Использование Minikube для создания кластера

Темы

  • Узнать, что такое кластер Kubernetes.
  • Узнать, что такое Minikube.
  • Запуск кластера Kubernetes через онлайн-терминал.

Кластеры Kubernetes

Задача Kubernetes заключается в координации кластера компьютеров, работающего как одно целое. Абстрактные объекты в Kubernetes позволяют развертывать контейнеризированные приложения в кластер, не привязывая их к отдельным машинам. Для использования этой новой модели развертывания, приложения должны быть подготовлены так, чтобы они не зависели от конкретных хостов, т.е. они должны быть упакованы в контейнеры. Приложения в контейнерах более гибки и доступны, чем в предыдущих моделях развертывания, когда приложения устанавливались непосредственно на конкретные машины в виде пакетов, тесно связанных с хостом. Kubernetes автоматизирует распределение и выполнение контейнеров приложений для запуска в кластере более эффективным образом. Kubernetes — это платформа с открытым исходным кодом, готовая к промышленной эксплуатации.

Кластер Kubernetes состоит из двух типов ресурса:

  • Мастер (ведущий узел) управляет кластером
  • Рабочие узлы — машины, на которых выполняются приложения

Краткое содержание:

  • Кластер Kubernetes
  • Minikube

Kubernetes — платформа с открытым исходным кодом промышленного уровня, которая управляет размещением (планированием) и запуском контейнеров приложений в пределах компьютерных кластеров и между ними.


Схема кластера


Мастер отвечает за управление кластером. Мастер координирует все процессы в кластере, такие как планирование выполнения приложений, сохранение требуемого состояния приложений, а также их масштабирование и обновление.

Узел — это виртуальная машина или физический компьютер, который выполняет роль рабочего узла в кластере Kubernetes. У каждого узла есть Kubelet — агент, управляющий узлом и взаимодействующий с ведущим узлом Kubernetes. Узел также имеет инструменты для выполнения контейнерных операций, например, Docker или rkt. Кластер Kubernetes в промышленном окружении должен состоять как минимум из трёх узлов.

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

При развертывании приложений в Kubernetes вы сообщаете ведущему узлу запускать контейнеры приложений. Ведущий узел планирует выполнение контейнеров на узлах кластера. Узлы взаимодействуют с ведущим узлом посредством API Kubernetes, который предлагает ведущий узел. Кроме этого, конечные пользователи могут напрямую использовать API Kubernetes для работы с кластером.

Kubernetes-кластер может быть развернут на физических или виртуальных машинах. Чтобы начать работать с Kubernetes, можно использовать Minikube. Minikube — это упрощённая реализация Kubernetes, которая создает виртуальную машину на вашем локальном компьютере и разворачивает простой кластер с одним узлом. Minikube доступен для Linux, macOS и Windows. В CLI-инструменте Minikube есть основные операции для инициализации кластера, включая запуск, завершение, просмотра состояния и удаления кластера. Однако в этом уроке вы будете использовать онлайн-терминал с уже установленным Minikube.

Теперь, когда вы знаете, что такое Kubernetes, можно перейти к онлайн-уроку, где вы запустите ваш первый кластер!


2.1.2 - Интерактивный урок - Создание кластера

Данный экран слишком маленький, чтобы работать с терминалом, пожалуйста, используйте компьютер или планшет.

2.2 - Развёртывание приложения

2.2.1 - Использование kubectl для развёртывания приложения

Темы

  • Узнать про развёртывания приложения.
  • Развернуть первое приложение на Kubernetes с помощью kubectl.

Развёртывания Kubernetes

Как только вы запустили кластер Kubernetes, вы можете развернуть свои контейнеризированные приложения в него. Для этого вам нужно создать конфигурацию развёртывания (Deployment) в Kubernetes. Развёртывание сообщает Kubernetes, как создавать и обновлять экземпляры вашего приложения. После создания развёртывания ведущий узел Kubernetes планирует запустить экземпляры приложения на отдельных узлах в кластере.

Когда экземпляры приложения были созданы, контроллер развёртывания Kubernetes непрерывно отслеживает их. Если узел, на котором размещен экземпляр, вышёл из строя или был удалён, контроллер развёртывания вместо этого экземпляра использует экземпляр на другом узле в кластере. Этот процесс представляет собой механизм самовосстановления, обеспечивающий работу кластера в случае возникновения аппаратных неисправностей либо технических работ.

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

Краткое содержание:

  • Развёртывания
  • Kubectl

Развёртывание отвечает за создание и обновление экземпляров приложения


Развёртывание вашего первого приложения на Kubernetes


Вы можете создавать и управлять развёртыванием через командный инструмент Kubernetes под названием Kubectl. Kubectl использует API Kubernetes для работы с кластером. В этом модуле вы узнаете про наиболее используемые команды Kubectl, необходимые для создания развёртываний, которые будут запускать приложения в кластере Kubernetes.

При создании развертывания нужно указать образ контейнера приложения и количество запущенных реплик. Впоследствии эти параметры можно изменить. В модулях 5 и 6 рассказывается про масштабирование и обновление развертываний.

Чтобы приложение запускалось в Kubernetes, оно должно быть упаковано в один из поддерживаемых форматов контейнеров

В качестве первого развёртывания будем использовать приложение на Node.js, упакованное в Docker-контейнер. Следуя инструкциям в руководстве "Привет, Minikube" вы сможете создать такое приложение Node.js и поместить его в контейнер.

Теперь, когда познакомились с развёртываниями, можно начать онлайн-урок, где вы развернёте своё первое приложение!


2.2.2 - Интерактивный урок - Развёртывание приложения

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


Для работы с терминалом, пожалуйста, используйте компьютер или планшет.

2.3 - Изучение приложения

2.3.1 - Изучение подов и узлов

Темы

  • Узнать про поды Kubernetes.
  • Узнать про узлы Kubernetes.
  • Диагностика развёрнутых приложений.

Поды Kubernetes

После того, как вы создали развёртывание в модуле 2, Kubernetes создал под (Pod), в котором был размещён экземпляр вашего приложения. Под — это абстрактный объект Kubernetes, представляющий собой группу из одного или нескольких контейнеров приложения (например, Docker или rkt) и совместно используемых ресурсов для этих контейнеров. Ресурсами могут быть:

  • Общее хранилище (тома)
  • Сеть (уникальный IP-адрес кластера)
  • Информация по выполнению каждого контейнера (версия образа контейнера или используемые номера портов)

Под представляет специфичный для приложения "логический хост" и может содержать разные контейнеры приложений, которые в общем и целом тесно связаны. Например, в поде может размещаться как контейнер с приложением на Node.js, так и другой контейнер, который использует данные от веб-сервера Node.js. Все контейнеры в поде имеют одни и те же IP-адрес и пространство порта, выполняющиеся в общем контексте на одном и том же узле.

Поды — неделимая единица в платформе Kubernetes. При создании развёртывания в Kubernetes, создаются поды с контейнерами внутри (в отличие от непосредственного создания контейнеров). Каждый Pod-объект связан с узлом, на котором он размещён, и остаётся там до окончания работы (согласно стратегии перезапуска) либо удаления. В случае неисправности узла такой же под будет распределён на другие доступные узлы в кластере.

Краткое содержание:

  • Поды
  • Узлы
  • Основные команды Kubectl

Под — группа из одного или нескольких контейнеров приложений (например, Docker или rkt), включающая общие используемые хранилище (тома), IP-адрес и информацию по их запуску.


Схема подов


Узлы

Под всегда работает в узле. Узел — это рабочая машина в Kubernetes, которая в зависимости от кластера может быть либо виртуальной, либо физической. Каждый узел управляется мастером (ведущим узлом). Узел может содержать несколько подов, которые мастер Kubernetes автоматически размещает на разные узлы кластера. Ведущий узел при автоматическом планировании (распределении подов по узлам) учитывает доступные ресурсы на каждом узле.

В каждом узле Kubernetes как минимум работает:

  • Kubelet — процесс, отвечающий за взаимодействие между мастером Kubernetes и узлом; он управляет подами и запущенными контейнерами на рабочей машине.
  • Среда выполнения контейнера (например, Docker или rkt), отвечающая за получение (загрузку) образа контейнера из реестра, распаковку контейнера и запуск приложения.

Контейнеры должны запускаться вместе только в пределах одного пода, если они тесно связаны и должны совместно использовать ресурсы (например, диск)


Схема узла


Диагностика с помощью kubectl

В модуле 2 вы использовали инструмент командной строки Kubectl. В этом (третьем) модуле вы продолжите его использовать, но для получения информации о развернутых приложениях и окружениях, в которых они работают. Наиболее распространенные операции выполняются с использованием следующих команд kubectl:

  • kubectl get — вывод списка ресурсов
  • kubectl describe — вывод подробной информации о ресурсе
  • kubectl logs — вывод логов контейнера в поде
  • kubectl exec — выполнение команды в контейнере пода

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

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

Узел — рабочая машина в Kubernetes, которая может быть как виртуальной, так и физической (в зависимости от используемого кластера). В одном узле могут быть запущены несколько подов


2.3.2 - Интерактивный урок - Изучение приложения


Для работы с терминалом, пожалуйста, используйте компьютер или планшет.

2.4 - Открытие доступа к приложению

2.4.1 - Создание сервиса для открытия доступа к приложению

Темы

  • Узнать о сервисах в Kubernetes
  • Разобраться с тем, как метки и объекты LabelSelector связаны с сервисом
  • Открыть доступ к приложению вне кластера Kubernetes через сервис

Обзор сервисов Kubernetes

Под — это расходный материал в Kubernetes. У подов есть жизненный цикл. Когда рабочий узел завершается, запущенные поды в узле также уничтожаются. После этого ReplicaSet попытается автоматически вернуть кластер обратно в требуемое состояние, создавая новые поды, чтобы поддержать работоспособность приложения. Другой пример — бэкенд для обработки изображений с 3 репликами. Поскольку это взаимозаменяемые реплики, то они не влияют на фронтенд-часть, даже если под был уничтожен и пересоздан. Тем не менее, каждый под в кластере Kubernetes имеет уникальный IP-адрес, даже под на одном и том же узле, поэтому должен быть способ автоматической координации изменений между подами, чтобы приложения продолжали функционировать.

Сервис в Kubernetes — это абстрактный объект, который определяет логический набор подов и политику доступа к ним. Сервисы создают слабую связь между подами, которые от них зависят. Сервис создаётся в формате YAML (рекомендуемый формат) или JSON, как и все остальные объекты в Kubernetes. Как правило, набор подов для сервиса определяется LabelSelector (ниже описано, в каких случаях понадобиться сервис без указания selector в спецификации).

Хотя у каждого пода есть уникальный IP-адрес, эти IP-адреса не доступны за пределами кластера без использования сервиса. Сервисы позволяют приложениям принимать трафик. Сервисы могут быть по-разному открыты, в зависимости от указанного поля type в ServiceSpec:

  • ClusterIP (по умолчанию) - открывает доступ к сервису по внутреннему IP-адресу в кластере. Этот тип делает сервис доступным только внутри кластера.
  • NodePort - открывает сервис на одном и том же порту каждого выбранного узла в кластере с помощью NAT. Делает сервис доступным вне кластера, используя <NodeIP>:<NodePort>. Является надмножеством ClusterIP.
  • LoadBalancer - создает внешний балансировщик нагрузки в текущем облаке (если это поддерживается) и назначает фиксированный внешний IP-адрес для сервиса. Является надмножеством NodePort.
  • ExternalName - открывает доступ к сервису с указанным именем (определённое в поле externalName в спецификации) и возвращает запись CNAME. Прокси не используется. Для этого типа требуется версия kube-dns 1.7 или выше.

Более подробно узнать о различных типах сервисах можно в руководстве Использование IP-порта источника. Также изучите Подключение приложений к сервисам.

Кроме этого, обратите внимание, что в некоторых случаях в сервисах не определяется selector в спецификации. Сервис без selector не будет создавать соответствующий объект конечной точки (Endpoint). Таким образом, пользователь может вручную назначить сервис определённым конечным точкам. Использование type: ExternalName — это другой вариант использования, когда не нужно определять селектор в сервисе.

Краткое содержание

  • Открытие внешнего трафика для подов
  • Балансировка нагрузки трафика между подов
  • Использование метки

Сервис Kubernetes — это уровень абстракции, который определяет логический набор подов, перенаправляет внешний трафик, балансирует нагрузку и реализует паттерн Service Discovery для этих подов.


Сервисы и метки

Сервис направляет трафик через набор подов. Сервисы — это абстракция, позволяющая взаимозаменять поды Kubernetes без ущерба для приложения. Сервисы в Kubernetes находят и маршрутизируют трафик между зависимыми подами (это могут быть фронтенд- и бэкенд-компоненты приложения).

Сервисы для выбора набора подов используют метки и селекторы. Метки — пары ключ-значение, добавленные к объектам; например, они могут использоваться чтобы:

  • Идентифицировать объекты для окружений разработки, тестирования и продакшена
  • Добавить теги версии
  • Классифицировать объекты через теги


Метки могут добавляться во время создания объектов или после этого. Они также могут быть изменены в любое время. Теперь давайте откроем доступ к приложению путём создания сервиса и добавление меток.


2.4.2 - Интерактивный урок - Открытие доступа к приложению

Для работы с терминалом, пожалуйста, используйте компьютер или планшет.

2.5 - Масштабирование приложения

2.5.1 - Запуск нескольких экземпляров приложения

Темы

  • Масштабирование приложения с помощью kubectl.

Масштабирование приложения

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

Масштабирование осуществляется за счёт изменения количества реплик в развёртывании.

Краткое содержание:

  • Масштабирование развёртывания

Количество экземпляров можно указать прямо при создании развёртывания, используя параметр --replicas команды kubectl run


Обзор масштабирования


В случае масштабирования развёртывания создаются новые поды, которые распределяются по узлам с доступными ресурсами. Масштабирование увеличит количество подов в соответствии с указанным требуемым состоянием. Kubernetes также поддерживает автоматическое масштабирование подов (не рассматривается в данном уроке). Кроме этого, возможно масштабирование до нуля, тогда завершается работа всех подов в развертывании.

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

Масштабирование выполняется с помощью изменения количества реплик в развертывании.


Имея несколько работающих экземпляров приложения можно выполнять плавающие обновления (rolling updates) без простоев. С ними мы познакомимся в следующем модуле. А пока перейдём к онлайн-терминалу и промасштабируем наше приложение.


2.5.2 - Интерактивный урок - Масштабирование приложения

Для работы с терминалом, пожалуйста, используйте компьютер или планшет

2.6 - Обновление приложения

2.6.1 - Выполнение плавающего обновления

Темы

  • Выполнение плавающего обновления с помощью kubectl.

Обновление приложения

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

В предыдущем модуле мы промасштабировали приложение до нескольких экземпляров. Это необходимо сделать, чтобы иметь возможность обновлять приложение, не влияя на его доступность. По умолчанию максимальное количество подов, которое может быть недоступно во время обновления, и максимальное количество новых подов, которое можно создать, равны 1. Эти две опции могут быть определены в абсолютном (числа) или относительном соотношении (проценты). В Kubernetes обновления версионируются, поэтому любое обновление развёртывания можно откатить до предыдущей (стабильной) версии.

Краткое содержание:

  • Обновление приложения

Плавающие обновления последовательно заменяют экземпляры подов на новые, тем самым позволяя обновить развёртывания без простоев


Обзор плавающих обновлений


Подобно масштабированию приложения, если развёртывание доступно извне, при обновлении сервис будет балансировать трафик только между доступными подами. Доступный под — это экземпляр, который может быть запущен для пользователей приложения.

С помощью плавающих обновлений можно:

  • Переводить приложение из одного окружения в другое (через обновления образа контейнера)
  • Откатываться к предыдущим версиям
  • Осуществлять непрерывную интеграцию и непрерывную доставку приложений без простоев

Если развёртывание было открыто наружу, в процессе обновления сервис будет балансировать нагрузку трафика только на доступные поды.


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


2.6.2 - Интерактивный урок - Обновление приложения

Для работы с терминалом, пожалуйста, используйте компьютер или планшет