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


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

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

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

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

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

  • Если вы предпочитаете выполнять справочные команды 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.61.0 или более поздняя версия Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

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

  • Ознакомьтесь с таблицей SKU виртуальной машины в разделе справочника по списку поддерживаемых номеров SKU виртуальных машин.

  • Ознакомьтесь с поддерживаемыми версиями Kubernetes для списка поддерживаемых версий Kubernetes.

  • Создайте группу ресурсов с помощью az group create команды. Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure. При создании группы ресурсов вам будет предложено указать расположение. Это расположение хранилища метаданных группы ресурсов и место, где ресурсы выполняются в Azure, если вы не указываете другой регион во время создания ресурса. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

    az group create --name myResourceGroup --location eastus
    

    Следующий пример выходных данных похож на успешное создание группы ресурсов:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Для развертывания файла Bicep или шаблона ARM необходим доступ с правом записи для развертываемых ресурсов и доступ ко всем операциям с типом ресурсов Microsoft.Resources/deployments. Например, для развертывания кластера требуются разрешения Microsoft.NetworkCloud/kubernetesclusters/write и Microsoft.Resources/deployments/* . Список ролей и разрешений см. в статье Встроенные роли Azure.

  • Вам нужен custom location идентификатор ресурса кластера Nexus оператора Azure.

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

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

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

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

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

«Переменная» Description
LOCATION Регион Azure, в котором требуется создать кластер.
RESOURCE_GROUP Имя группы ресурсов Azure, в которой требуется создать кластер.
SUBSCRIPTION_ID Идентификатор подписки Azure.
CUSTOM_LOCATION Этот аргумент указывает пользовательское расположение экземпляра Nexus.
CSN_ARM_ID Идентификатор CSN — это уникальный идентификатор для сети облачных служб, которую вы хотите использовать.
CNI_ARM_ID Идентификатор CNI — это уникальный идентификатор сетевого интерфейса, который будет использоваться средой выполнения контейнера.
AAD_ADMIN_GROUP_OBJECT_ID Идентификатор объекта группы Microsoft Entra, которая должна иметь права администратора в кластере.
CLUSTER_NAME Имя, которое вы хотите дать кластеру Nexus Kubernetes.
K8S_VERSION Версия Kubernetes, которую вы хотите использовать.
ADMIN_USERNAME Имя пользователя для администратора кластера.
SSH_PUBLIC_KEY Открытый ключ SSH, используемый для безопасного взаимодействия с кластером.
CONTROL_PLANE_COUNT Количество узлов плоскости управления для кластера.
CONTROL_PLANE_VM_SIZE Размер виртуальной машины для узлов уровня управления.
INITIAL_AGENT_POOL_NAME Имя начального пула агентов.
INITIAL_AGENT_POOL_COUNT Количество узлов в исходном пуле агентов.
INITIAL_AGENT_POOL_VM_SIZE Размер виртуальной машины для начального пула агентов.
POD_CIDR Диапазон сети для модулей pod Kubernetes в кластере в нотации CIDR.
SERVICE_CIDR Диапазон сети для служб Kubernetes в кластере в нотации CIDR.
DNS_SERVICE_IP IP-адрес службы DNS Kubernetes.

После определения этих переменных можно запустить команду Azure CLI для создания кластера. --debug Добавьте флаг в конце, чтобы предоставить более подробные выходные данные для устранения неполадок.

Чтобы определить эти переменные, используйте следующие команды набора и замените примеры значений предпочитаемыми значениями. Можно также использовать значения по умолчанию для некоторых переменных, как показано в следующем примере:

RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"

Внимание

Важно заменить заполнители для CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID и AAD_ADMIN_GROUP_OBJECT_ID фактическими значениями перед выполнением этих команд.

После определения этих переменных можно создать кластер Kubernetes, выполнив следующую команду Azure CLI:

az networkcloud kubernetescluster create \
  --name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --location "${LOCATION}" \
  --kubernetes-version "${K8S_VERSION}" \
  --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
  --admin-username "${ADMIN_USERNAME}" \
  --ssh-key-values "${SSH_PUBLIC_KEY}" \
  --control-plane-node-configuration \
    count="${CONTROL_PLANE_COUNT}" \
    vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
    ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
  --network-configuration \
    cloud-services-network-id="${CSN_ARM_ID}" \
    cni-network-id="${CNI_ARM_ID}" \
    pod-cidrs="[${POD_CIDR}]" \
    service-cidrs="[${SERVICE_CIDR}]" \
    dns-service-ip="${DNS_SERVICE_IP}"

Если недостаточно емкости для развертывания запрошенных узлов кластера, появится сообщение об ошибке. Однако это сообщение не содержит никаких сведений о доступной емкости. Он указывает, что создание кластера не может продолжаться из-за нехватки емкости.

Примечание.

Вычисление емкости учитывает весь кластер платформы, а не ограничивается отдельными стойками. Таким образом, если пул агентов создается в зоне (где стойка равна зоне) с недостаточной емкостью, но другая зона имеет достаточную емкость, создание кластера продолжается, но в конечном итоге истекает время ожидания. Этот подход к проверке емкости имеет смысл только в том случае, если определенная зона не указана во время создания кластера или пула агентов.

Через несколько минут выполнение команды завершается и отображаются сведения о кластере. Дополнительные варианты см . в кратком руководстве по развертыванию кластера Azure Nexus Kubernetes с помощью Bicep.

Просмотр развернутых ресурсов

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

Чтобы просмотреть сведения о myNexusK8sCluster кластере myResourceGroup в группе ресурсов, выполните следующую команду Azure CLI:

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

Кроме того, чтобы получить список имен пулов агентов, связанных с myNexusK8sCluster кластером в myResourceGroup группе ресурсов, можно использовать следующую команду Azure CLI.

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

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

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

Дополнительные сведения о доступных параметрах см. в разделе "Подключение к кластеру Kubernetes" оператора Azure Nexus.

Примечание.

При создании кластера Nexus Kubernetes Приложение Nexus автоматически создает управляемую группу ресурсов, выделенную для хранения ресурсов кластера, в этой группе устанавливается подключенный к Arc ресурс кластера.

Чтобы получить доступ к кластеру, необходимо настроить подключение kubeconfigкластера. После входа в Azure CLI с соответствующей сущностью Microsoft Entra вы можете получить необходимые kubeconfig сведения для взаимодействия с кластером из любого места, даже за пределами брандмауэра, который окружает его.

  1. Задать CLUSTER_NAMEи RESOURCE_GROUPSUBSCRIPTION_ID переменные.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Запрос управляемой группы ресурсов с az помощью и хранения в MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. Следующая команда запускает прокси-сервер connectedk8s, который позволяет подключаться к серверу API Kubernetes для указанного кластера Nexus Kubernetes.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. С помощью kubectl отправьте запросы в кластер:

    kubectl get pods -A
    

    Теперь вы увидите ответ из кластера, содержащий список всех узлов.

Примечание.

Если появится сообщение об ошибке "Не удалось опубликовать маркер доступа к прокси-серверу клиента для подключения к MSI", может потребоваться выполнить az login повторную проверку подлинности с помощью Azure.

Добавление пула агентов

Кластер, созданный на предыдущем шаге, имеет один пул узлов. Давайте добавим второй пул агентов с помощью az networkcloud kubernetescluster agentpool create команды. В следующем примере создается пул агентов с именем myNexusK8sCluster-nodepool-2:

Можно также использовать значения по умолчанию для некоторых переменных, как показано в следующем примере:

RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"

После определения этих переменных можно добавить пул агентов, выполнив следующую команду Azure CLI:

az networkcloud kubernetescluster agentpool create \
  --name "${AGENT_POOL_NAME}" \
  --kubernetes-cluster-name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --count "${AGENT_POOL_COUNT}" \
  --mode "${AGENT_POOL_MODE}" \
  --vm-sku-name "${AGENT_POOL_VM_SIZE}"

Через несколько минут команда завершает работу и возвращает сведения о пуле агентов. Дополнительные варианты см . в кратком руководстве по развертыванию кластера Azure Nexus Kubernetes с помощью Bicep.

Примечание.

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

Следующий выходной пример напоминает успешное создание пула агентов.

$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count    Location    Mode    Name                          ProvisioningState    ResourceGroup    VmSkuName
-------  ----------  ------  ----------------------------  -------------------  ---------------  -----------
1        eastus      System  myNexusK8sCluster-nodepool-1  Succeeded            myResourceGroup  NC_P10_56_v1
1        eastus      User    myNexusK8sCluster-nodepool-2  Succeeded            myResourceGroup  NC_P10_56_v1

Очистка ресурсов

Удалите группу ресурсов, если она больше не нужна. Группа ресурсов и все ресурсы в группе ресурсов удаляются.

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

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

Следующие шаги

Теперь вы можете развернуть CNFS напрямую через подключение к кластеру или через Диспетчер служб операторов Azure.