Краткое руководство. Развертывание кластера Службы Azure Kubernetes с помощью Azure CLI

Служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes, которая позволяет быстро развертывать кластеры и управлять ими. В этом кратком руководстве вы выполните указанные ниже задачи.

  • Развертывание кластера AKS с помощью Azure CLI.

  • Запуск многоконтейнерного приложения, которое включает в себя веб-интерфейс и экземпляр Redis в кластере.

  • Мониторинг работоспособности кластера и pod, на которых выполняется приложение.

    Voting app deployed in Azure Kubernetes Service

В этом руководстве предполагается, что у вас есть некоторое представление о функциях Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).

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

Дополнительные сведения о создании пула узлов Windows Server см. в разделе Создание кластера AKS, поддерживающего контейнеры Windows Server.

Предварительные требования

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в разделе Azure Cloud Shell QuickStart-Bash.

    Launch Cloud Shell in a new window

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. если вы используете Windows или macOS, рассмотрите возможность запуска Azure CLI в контейнере docker. Дополнительные сведения см. в разделе запуск Azure CLI в контейнере DOCKER.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о дополнительных возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Если появится запрос, установите расширения Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для работы с этой статьей требуется Azure CLI версии 2.0.64 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

  • Удостоверение, используемое для создания кластера, имеет соответствующие минимальные разрешения. Дополнительные сведения о доступе и удостоверении для AKS см. в статье Возможности контроля доступа и идентификации в Службе Azure Kubernetes (AKS).

  • Убедитесь, что в подписке зарегистрированы Microsoft.OperationsManagement и Microsoft.OperationalInsights. Чтобы проверить состояние регистрации, сделайте следующее:

    az provider show -n Microsoft.OperationsManagement -o table
    az provider show -n Microsoft.OperationalInsights -o table
    

    Если это не так, зарегистрируйте Microsoft.OperationsManagement и Microsoft.OperationalInsights следующим образом:

    az provider register --namespace Microsoft.OperationsManagement
    az provider register --namespace Microsoft.OperationalInsights
    

Примечание

Если вы работаете в локальной среде, а не в Azure Cloud Shell, команды из этого краткого руководства следует выполнять от имени администратора.

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

Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure. В процессе создания группы ресурсов вам будет предложено указать расположение. Это расположение определяет следующее:

  • место хранения метаданных группы ресурсов;
  • место выполнения ресурсов в Azure, если при их создании не указан другой регион.

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

Создайте группу ресурсов с помощью команды az group create.

az group create --name myResourceGroup --location eastus

Выходные данные для успешно созданной группы ресурсов:

{
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

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

Создайте кластер AKS с помощью команды AZ AKS Create с параметром --Enable-надстроек , чтобы включить Azure Monitor контейнерную аналитику. В следующем примере создается кластер myAKSCluster с одним узлом.

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys

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

Примечание

При создании кластера AKS автоматически создается вторая группа ресурсов для хранения ресурсов AKS. Дополнительные сведения см. в разделе Почему с AKS создаются две группы ресурсов?

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

Кластером Kubernetes можно управлять при помощи kubectl клиента командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl уже установлен.

  1. Установите kubectl локальную систему с помощью команды kubectl :

    az aks install-cli
    
  2. Настройте kubectl для подключения к кластеру Kubernetes с помощью команды kubectl . Приведенная ниже команда:

    • скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования;
    • Использует ~/.kube/config расположение по умолчанию для ~/.kube/config. Чтобы указать другое расположение файла конфигурации Kubernetes, используйте параметр --file;
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Проверьте подключение к кластеру, выполнив команду kubectl get. Эта команда возвращает список узлов кластера.

    kubectl get nodes
    

    В выходных данных будет представлен один узел, созданный на предыдущих шагах. Убедитесь, что этот узел находится в состоянии готовности:

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31718369-0   Ready    agent   6m44s   v1.12.8
    

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

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

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

  • пример приложения Azure для голосования на языке Python;
  • экземпляр Redis.

Кроме того, создаются две Службы Kubernetes:

  • внутренняя служба для экземпляра Redis;
  • внешняя служба для доступа к приложению Azure для голосования из Интернета.
  1. Создайте файл с именем azure-vote.yaml.

    • Если вы используете Azure Cloud Shell, этот файл можно создать с помощью code, vi или nano, как при работе в виртуальной или физической системе:
  2. Скопируйте в него следующее определение YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            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/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            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
    
  3. Разверните приложение с помощью команды kubectl apply и укажите имя манифеста YAML:

    kubectl apply -f azure-vote.yaml
    

    Выходные данные подтверждают успешное создание развертываний и служб:

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

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

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

Отслеживайте ход выполнения с помощью команды kubectl Get Service с аргументом.

kubectl get service azure-vote-front --watch

Выходные данные внешнего IP-адреса для службы изначально будут отображаться как ожидающие.

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

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

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Чтобы увидеть приложение для голосования Azure в действии, откройте в веб-браузере внешний IP-адрес вашей службы.

Voting app deployed in Azure Kubernetes Service

Просмотрите метрики работоспособности "узлы кластера" и "Pod", полученные Azure Monitor "аналитика контейнера " в портал Azure.

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

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

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

Примечание

Если кластер AKS был создан с управляемым системой удостоверением (параметр удостоверений по умолчанию, используемый в этом кратком руководстве), удостоверение управляется платформой и не требует удаления.

Если кластер AKS был создан с помощью субъекта-службы вместо параметра Identity, то при удалении кластера субъект-служба, используемый кластером AKS, не удаляется. Инструкции по удалению субъекта-службы см. в разделе с дополнительными замечаниями.

Получение кода

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

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

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

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