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


Использование службы Azure Kubernetes в Azure Stack Hub с помощью ИНТЕРФЕЙСА командной строки

В этой статье описано, как приступить к работе со службой Azure Kubernetes (AKS) в Azure Stack Hub. В нем описывается основной набор сценариев для ознакомления с 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 CLI, чтобы избежать конфликтов с предварительной версией 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 ID на 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. Чтобы создать SPN с помощью федеративных служб 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 и содержат спецификацию кластера, включая созданный открытый ключ SSH, полное доменное имя (FQDN), используемое в кластере среди других свойств. Обратите внимание, что команда выводит такой текст, подчеркивая расположение закрытого ключа: SSH key files '/home/azureuser/.ssh/id_rsa' и '/home/azureuser/.ssh/id_rsa.pub' создаются в \~/.ssh, чтобы разрешить доступ SSH к виртуальной машине. Сохраните эти ключи в безопасном месте, чтобы их можно было использовать в случае необходимости доступа по SSH к виртуальным машинам, например, при устранении неполадок.

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

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

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

    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 Engine.

При использовании 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, чтобы развернуть в Azure Stack Hub, необходимо указать дополнительные параметры, как показано в следующем примере. Идентификатор подсети виртуальной сети должен выглядеть следующим образом: "/subscriptions/dfdfdff-5dfdf-dfdf-dfdf-dfdfdfdfdfd/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. Обратите внимание на несоответствия, которые не ожидались, и предоставьте обратную связь.

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