Развертывание кластера Kubernetes для контейнеров Linux (не рекомендуется)

Совет

Обновленную версию этого краткого руководства, использующего Служба Azure Kubernetes, см. в кратком руководстве по развертыванию кластера Служба Azure Kubernetes (AKS).

Предупреждение

Служба контейнеров Azure (ACS) выводится из эксплуатации. В нее больше не добавляются новые компоненты или функциональные возможности. Все API, интерфейс портала, команды CLI и документы помечаются как нерекомендуемые.

В 2017 году мы объявили о выпуске Службы Azure Kubernetes (AKS), которая призвана упростить администрирование, развертывание и эксплуатацию платформы Kubernetes. Если вы используете оркестратор Kubernetes, перейдите на AKS до 31 января 2020 года. Чтобы приступить к работе, см. статью о переходе на Службу Azure Kubernetes.

Дополнительные сведения см. в статье Поддержка Службы контейнеров Azure будет прекращена 31 января 2020 года.

В этом кратком руководстве кластер Kubernetes развертывается с помощью Azure CLI. Затем в кластере будет развернуто и запущено многоконтейнерное приложение, состоящее из веб-интерфейса и экземпляра Redis. По завершении приложение будет доступно через Интернет.

Примера приложения, который используется в этом документе, написан на языке Python. Основные понятия и действия, описанные здесь, можно использовать для развертывания в кластере Kubernetes любого образа контейнера. Файл кода (Dockerfile) и предварительно созданные файлы манифеста Kubernetes, относящиеся к этому проекту, доступны на портале GitHub.

Изображение перехода к приложению Azure для голосования

Для работы с этим кратким руководством необходимо знание основных понятий Kubernetes. Подробные сведения см. в документации по Kubernetes.

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

Использование Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.

Начало работы с Azure Cloud Shell

Параметр Пример и ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом. При нажатии кнопки Попробовать код не копируется в Cloud Shell автоматически. Открытие Azure Cloud Shell с помощью кнопки
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Запуск Cloud Shell в новом окне
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Кнопка Cloud Shell на портале Azure

Чтобы выполнить код из этой статьи в Azure Cloud Shell, выполните следующие действия:

  1. Запустите Cloud Shell.

  2. В блоке кода нажмите кнопку Копировать, чтобы скопировать код.

  3. Вставьте код в окно сеанса Cloud Shell, нажав клавиши CTRLSHIFTV в Windows и Linux или CMDSHIFTV в macOS.

  4. Нажмите клавишу ВВОД, чтобы выполнить код.

Если вы решили установить и использовать CLI локально, для выполнения инструкций в этом руководстве вам понадобится Azure CLI 2.0.4 или более поздней версии. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI.

Создание группы ресурсов

Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure.

В следующем примере создается группа ресурсов с именем myResourceGroup в расположении westeurope.

az group create --name myResourceGroup --location westeurope

Выходные данные:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
  "location": "westeurope",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

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

Создание кластера Kubernetes в Службе контейнеров Azure с помощью команды az acs create. В следующем примере создается кластер myK8sCluster при помощи одного главного узла Linux и трех узлов агентов Linux.

az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys

В некоторых случаях, например при использовании ограниченной пробной версии, доступ подписки Azure к ресурсам Azure ограничен. Если происходит сбой развертывания из-за ограничения доступных ядер, уменьшите количество агентов по умолчанию, добавив --agent-count 1 в команду az acs create.

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

Подключение к кластеру

Управлять кластером Kubernetes можно при помощи kubectl, клиента командной строки Kubernetes.

Если вы используете Azure Cloud Shell, клиент kubectl уже установлен. Для локальной установки можно использовать команду az acs kubernetes install-cli.

Чтобы настроить kubectl для подключения к кластеру Kubernetes, выполните команду az acs kubernetes get-credentials. На этом шаге скачиваются учетные данные и настраивается интерфейс командной строки Kubernetes для их использования.

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

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

kubectl get nodes

Выходные данные:

NAME                    STATUS                     AGE       VERSION
k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6
k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

Выполнение приложения

Файл манифеста Kubernetes определяет требуемое состояние для кластера, включая образы контейнеров, которые нужно запустить. В этом примере манифест используется для создания всех объектов, необходимых для запуска приложения Azure для голосования.

Создайте файл с именем azure-vote.yml и скопируйте в него следующий YAML-файл: Если вы работаете в Azure Cloud Shell, этот файл можно создать с помощью Vi или Nano, как при работе в виртуальной или физической системе.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

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

kubectl create -f azure-vote.yml

Выходные данные:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Тестирование приложения

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

Чтобы отслеживать ход выполнения, используйте команду kubectl get service с аргументом --watch.

kubectl get service azure-vote-front --watch

Изначально для параметра ВНЕШНИЙ IP-АДРЕС службы azure-vote-front отображается состояние ожидания. Как только ВНЕШНИЙ IP-АДРЕС изменится с состояния ожидания на IP-адрес, используйте команду CTRL-C, чтобы остановить процесс отслеживания kubectl.

azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s
azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

Теперь можно перейти по внешнему IP-адресу в приложение Azure для голосования.

Изображение перехода к приложению Azure для голосования

Удаление кластера

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

az group delete --name myResourceGroup --yes --no-wait

Получите код

В этом кратком руководстве для развертывания Kubernetes используются предварительно созданные образы контейнеров. Связанный с приложением код, файл Dockerfile и файл манифеста Kubernetes доступны на сайте GitHub.

https://github.com/Azure-Samples/azure-voting-app-redis

Дальнейшие действия

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

Дополнительные сведения о службе контейнеров Azure и инструкции по созданию полного кода для примера развертывания см. в руководстве по кластерам Kubernetes.

Create container images to be used with Azure Container Service (Создание образов контейнеров для использования со Службой контейнеров Azure)