Краткое руководство. Создание кластера 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
сведения для взаимодействия с кластером из любого места, даже за пределами брандмауэра, который окружает его.
Задать
CLUSTER_NAME
иRESOURCE_GROUP
SUBSCRIPTION_ID
переменные.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Запрос управляемой группы ресурсов с
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)
Следующая команда запускает прокси-сервер connectedk8s, который позволяет подключаться к серверу API Kubernetes для указанного кластера Nexus Kubernetes.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
С помощью
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.