Поделиться через


Использование Служба Azure Kubernetes в Azure Stack Hub с помощью CLI

Это руководство поможет вам приступить к работе со службой Служба Azure Kubernetes (AKS) в Azure Stack Hub. В этой статье описывается main набор сценариев для ознакомления с AKS в Azure Stack Hub. Функции, доступные в Azure Stack Hub, — это подмножество функций, доступных в глобальной среде Azure.

В следующих разделах вы узнаете:

  1. Выполните предварительные требования для использования AKS в Azure Stack Hub.
  2. Выполните операции жизненного цикла кластера AKS с помощью Azure CLI и пользовательского портала Azure Stack Hub.

Установка Azure CLI

Вам потребуется установить Azure CLI с поддержкой AKS для вашего компьютера. Подготовьте чистый компьютер Linux или Windows для установки предварительной версии Azure CLI с поддержкой AKS. Убедитесь, что на компьютере не установлен Интерфейс командной строки Azure, чтобы избежать конфликтов с предварительной версией Azure CLI, которую вы установите далее. В большинстве приведенных ниже инструкций предполагается, что вы используете виртуальную машину Linux, но вы можете найти аналогичные шаги в Windows в документации по продукту.

Не обновляйте Azure CLI после установки Azure CLI с поддержкой AKS. Если вы выполните обновление, оно будет заменено готовой к работе версией, которая не поддерживает AKS.

Для компьютера с Ubuntu следуйте инструкциям в статье Установка Azure CLI в Linux.

После установки Azure CLI с поддержкой AKS убедитесь, что установка выполнена правильно, выполнив следующую команду Azure CLI:

    az --version

Это выходные данные компьютера Linux:

выходные данные на компьютере Linux

Azure CLI должен иметь версию 2.28.0 или более позднюю версию.

Подключение к Azure Stack Hub

  1. Подключитесь к конечной точке Azure Stack Hub. Для установки конкретной среды Azure Stack Hub, к которой вы подключаетесь, необходимо использовать Azure CLI. Инструкции см. в статье Подключение к Azure Stack Hub.

  2. Зарегистрируйте среду, чтобы Azure CLI смог подключиться к конечной точке azure Stack Hub Resource Manager для вашего экземпляра. Обновите URL-адреса в следующем фрагменте и выполните следующую команду:

    az cloud register \
        -n aks-preview-test \
        --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \
        --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \
        --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
    
  3. Настройте активную среду.

    az cloud set -n aks-preview-test
    
  4. Обновите конфигурацию среды.

    az cloud update --profile 2020-09-01-hybrid
    
  5. Подключитесь к среде.

    az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
    

    Примечание

    Если вы активируете ошибку проверки сертификата, возможно, сертификат, используемый для конечной точки azure Resource Manager, не является доверенным для клиентского компьютера. В этом случае необходимо экспортировать сертификат, используемый в конечных точках Azure Stack Hub, и доверять ему. Инструкции см. в статье Экспорт корневого сертификата ЦС Azure Stack Hub.

    В частности, для компьютеров Linux см. статью Идентификатор Microsoft Entra в Linux.

  6. Задайте подписку в сеансе Azure CLI в качестве подписки по умолчанию с помощью следующих команд:

    az account set --subscription <subscription-id>
    
  7. Зарегистрируйте поставщик ресурсов Служба Azure Kubernetes. Перечислите доступные поставщики ресурсов в подписке.

    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    Выходные данные должны выглядеть так:

    Выходные данные должны выглядеть следующим образом:

  8. Запишите поставщик ресурсов Microsoft.ContainerService , а затем зарегистрируйте его:

    az provider register --namespace Microsoft.ContainerService
    
  9. Повторите шаг 7, чтобы проверить состояние регистрации поставщика ресурсов. Регистрация может занять несколько минут.

После выполнения этих предварительных действий можно приступить к тестированию следующих сценариев.

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

Глобальные инструкции azure см. в статье Развертывание кластера Служба Azure Kubernetes с помощью Azure CLI. Приведенные здесь инструкции отражают ограничения использования AKS в Azure Stack Hub. Вы можете использовать Azure CLI для создания кластера AKS для контейнеров Linux или Windows.

  1. Создайте группу ресурсов:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Убедитесь, что у вас есть идентификатор субъекта-службы с участник разрешением на создание кластеров в подписке.

    1. Чтобы создать субъект-службу (SPN) с помощью идентификатора Microsoft Entra, следуйте этим инструкциям.
    2. Чтобы создать имя субъекта-службы с помощью федеративных служб Active Directory (AD FS), следуйте этим инструкциям.
    3. Чтобы назначить роль "Участник" имени субъекта-службы, см. инструкции. Обязательно выберите роль "Участник".
  3. Создайте кластер AKS из трех узлов агента. Укажите значения для приведенных ниже параметров, приведены примеры. Выполните команду:

    az aks create \
    --resource-group myResourceGroup \
    --name myakscluster \
    --dns-name-prefix myakscluster \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --location <Azure Stack Hub location> \
    --kubernetes-version 1.20.7
    

    Выходные данные этой операции будут иметь формат JSON и содержать спецификацию кластера, включая созданное открытое доменное имя (FQDN), созданное в кластере, а также другие свойства. Обратите внимание, что команда выводит такой текст, как этот, с выделенным расположением закрытого ключа: SSH key files '/home/azureuser/.ssh/id_rsa' и '/home/azureuser/.ssh/id_rsa.pub' были созданы в , \~/.ssh чтобы разрешить доступ по протоколу SSH к виртуальной машине. Храните эти ключи в безопасном расположении, чтобы их можно было использовать на случай, если потребуется выполнить SSH-подключение к виртуальным машинам, как это происходит при устранении неполадок.

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

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

  1. Управлять кластером Kubernetes можно c помощью kubectl, клиента командной строки Kubernetes. Чтобы установить kubectl локально, используйте команду az aks install-cli (вам может потребоваться использовать sudo в начале te, чтобы иметь разрешение на установку):

    az aks install-cli
    
  2. Чтобы настроить kubectl для подключения к кластеру Kubernetes, используйте az aks get-credentials команду . Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. Чтобы проверить подключение к кластеру, используйте команду kubectl get, чтобы получить список узлов кластера.

    kubectl get nodes
    

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

Изменение масштаба кластера

Другая задача управления кластером — масштабирование кластера. Вы можете масштабировать кластер в любое время после его создания с помощью команды az aks scale. Чтобы масштабировать кластер с первых трех узлов до 4, выполните следующую команду:

    az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4

После успешного масштабирования кластера выходные данные будут содержать "agentPoolProfiles", аналогичный следующему примеру:

    "agentPoolProfiles": [
        {
        "availabilityZones": null,
        "count": 4,
        "enableAutoScaling": null,
        "enableNodePublicIp": false,
        "maxCount": null,
        "maxPods": 110,
        "minCount": null,
        "mode": "System",
        "name": "mynodepool",
        "nodeLabels": {},
        "nodeTaints": null,
        "orchestratorVersion": "1.20.7",
        "osDiskSizeGb": 100,
        "osType": "Linux",
        "provisioningState": "Succeeded",
        "scaleSetEvictionPolicy": null,
        "scaleSetPriority": null,
        "spotMaxPrice": null,
        "tags": null,
        "type": "VirtualMachineScaleSets",
        "vmSize": " Standard_DS2_v2",
        "vnetSubnetId": null
        }
    ]

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

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

az aks delete --name myakscluster --resource-group myResourceGroup

Создание кластера AKS с пользовательской виртуальной сетью

Создание кластера для развертывания в сети, предоставляемой пользователем, является распространенным сценарием. Планирование конфигурации сети требует некоторой подготовки. Кроме того, обратите внимание, что в AKS сетевым подключаемым модулем по умолчанию является Azure CNI, а не Kubenet, как в случае с обработчиком AKS. С помощью Azure CNI каждый модуль pod получает IP-адрес из подсети и может быть доступен напрямую (без необходимости в таблице маршрутизации, как в случае с Kubenet). Эти IP-адреса должны быть уникальными в сетевом пространстве и должны быть запланированы. В следующей статье описывается процесс планирования развертывания пользовательской виртуальной сети. Вы можете найти различные конфигурации сети, которые работают в соответствии с вашими потребностями, и протестировать их. Для начального теста два следующих шага покажут базовый процесс:

  1. Следуйте инструкциям в этой статье , чтобы спланировать развертывание с помощью Azure CNI. Например, с помощью портала можно создать виртуальную сеть myAKSVnet с диапазоном IP-адресов 10.0.0.0/8 с подсетью myAKSSubnet и диапазоном IP-адресов 10.240.0.0/16 в группе ресурсов myTest-rg. Затем выполните следующий шаг для создания кластера.

    az network vnet create \
        --resource-group myTest-rg \
        --name myAKSVnet \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name myAKSSubnet \
        --subnet-prefix 10.240.0.0/16    
    
  2. Обратите внимание, что команда кластера, приведенная в статье Azure, хорошо работает при развертывании в Azure Stack Hub. Для развертывания в Azure Stack Hub необходимо указать дополнительные параметры, как показано в следующем примере. Идентификатор подсети виртуальной сети должен выглядеть следующим образом: /subscriptions/dfdfdff-5dfdf-dfdf-dfdf-dfdfdfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSSubnet:

    az aks create  \ 
    --resource-group myTest-rg \
    --name aksvnet \
    --dns-name-prefix  aksvnet \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8  \
    --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --network-plugin azure \
    --vnet-subnet-id '<subnet-resource-id>' \
    --skip-subnet-role-assignment \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.0.0.10 \
    --location redmond
    
  3. Следуйте инструкциям в разделе "Подключение к кластеру", чтобы подключиться к кластеру Kubernetes и развернуть приложения.

Проверка согласованности

Проверка согласованности между Azure и Azure Stack Hub

  1. Выберите сочетание команд из проверенных выше, из раздела "Справочник по командам" ниже или из собственных повседневных сценариев.
  2. Примените их к Azure и более поздних версий в Azure Stack Hub. Обратите внимание на несоответствия, которые не ожидаются, и оставьте отзыв.

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

Сведения об AKS в Azure Stack Hub