Создание и настройка кластера Службы Azure Kubernetes (AKS) для использования виртуальных узлов на портале Azure
Виртуальные узлы обеспечивают сетевое взаимодействие между модулями pod, работающими в кластерах Экземпляры контейнеров Azure (ACI) и Служба Azure Kubernetes (AKS). Для обеспечения этого взаимодействия создается подсеть виртуальной сети и назначаются делегированные разрешения. Виртуальные узлы работают только с кластерами AKS, созданными с помощью сетевого взаимодействия уровня Расширенный (Azure CNI). Кластеры AKS создаются с базовыми сетями (kubenet) по умолчанию.
В этой статье показано, как создать виртуальную сеть и подсети, а затем развернуть кластер AKS, использующий расширенную сеть с помощью портал Azure.
Примечание.
Общие сведения о доступности и ограничении региона виртуального узла см. в статье "Использование виртуальных узлов" в AKS.
Подготовка к работе
Вам нужен поставщик услуг ACI, зарегистрированный в вашей подписке.
Проверьте состояние регистрации поставщика ACI с помощью
az provider list
команды.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
В следующем примере выходных данных показано, как зарегистрирован поставщик Microsoft.ContainerInstance:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequired
Если поставщик не зарегистрирован, зарегистрируйте его с помощью
az provider register
команды.az provider register --namespace Microsoft.ContainerInstance
Создание кластера AKS
- Перейдите на домашнюю страницу портал Azure.
- Выберите "Создать контейнеры ресурсов>".
- В ресурсе Служба Azure Kubernetes (AKS) нажмите кнопку "Создать".
- На странице "Основы" настройте следующие параметры:
- Сведения о проекте: выберите подписку Azure, а затем выберите или создайте группу ресурсов Azure, например myResourceGroup.
- Сведения о кластере: введите имя кластера Kubernetes, например myAKSCluster. Выберите регион и версию Kubernetes для кластера AKS.
- Нажмите кнопку Далее: пулы узлов и установите флажок *Включить виртуальные узлы.
- Выберите Review + create (Просмотреть и создать).
- После завершения проверки нажмите кнопку "Создать".
По умолчанию этот процесс создает управляемое удостоверение кластера, которое используется для связи кластера и интеграции с другими службами Azure. Дополнительные сведения см. в статье о том, как использовать управляемые удостоверения. Вы также можете использовать субъект-службу в качестве удостоверения кластера.
Этот процесс настраивает кластер для расширенной сети и виртуальных узлов для использования собственной подсети виртуальной сети Azure. Подсеть имеет делегированные разрешения для подключения ресурсов Azure между кластером AKS. Если у вас еще нет делегированной подсети, портал Azure создает и настраивает виртуальную сеть Azure и подсеть с виртуальными узлами.
Подключение к кластеру
Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнить действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью. Управлять кластером Kubernetes можно при помощи kubectl, клиента командной строки Kubernetes. Клиент kubectl
предварительно установлен в Azure Cloud Shell.
Настройте
kubectl
подключение к кластеруaz aks get-credentials
Kubernetes с помощью команды. В следующем примере возвращаются учетные данные для имени кластера myAKSCluster в группе ресурсов myResourceGroup.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Проверьте подключение к кластеру
kubectl get nodes
с помощью .kubectl get nodes
В следующем примере выходных данных показан созданный один узел виртуальной машины и виртуальный узел Linux с именем virtual-node-aci-linux:
NAME STATUS ROLES AGE VERSION virtual-node-aci-linux Ready agent 28m v1.11.2 aks-agentpool-14693408-0 Ready agent 32m v1.11.2
Развертывание примера приложения
В Azure Cloud Shell создайте файл с именем
virtual-node.yaml
и скопируйте его в следующем YAML:apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: mcr.microsoft.com/azuredocs/aci-helloworld ports: - containerPort: 80 nodeSelector: kubernetes.io/role: agent beta.kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists
YamL определяет узелSelector и толерацию, что позволяет планировать модуль pod на виртуальном узле. Группа pod получает внутренний IP-адрес из подсети виртуальной сети Azure, которая делегирована для использования с виртуальными узлами.
Запустите приложение с помощью
kubectl apply
команды.kubectl apply -f virtual-node.yaml
Просмотрите модули pod, запланированные на узле, с помощью
kubectl get pods
команды с аргументом-o wide
.kubectl get pods -o wide
В следующем примере выходных данных показан модуль pod, запланированный
virtual-node-helloworld
virtual-node-linux
на узле.NAME READY STATUS RESTARTS AGE IP NODE virtual-node-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linux
Примечание.
При использовании образов, хранящихся в Реестре контейнеров Azure, настройте и используйте секрет Kubernetes. Ограничение виртуальных узлов заключается в том, что вы не можете использовать встроенную проверку подлинности субъекта-службы Microsoft Entra. Если вы не используете секрет, модули pod, запланированные на виртуальные узлы, не будут запускаться и сообщат об ошибке HTTP response status code 400 error code "InaccessibleImage"
.
Тестирование группы pod на виртуальном узле
Чтобы протестировать выполнение группы pod на виртуальном узле, откройте демонстрационную версию приложения в веб-клиенте. Модуль pod назначает внутренний IP-адрес, поэтому вы можете легко проверить подключение из другого модуля pod в кластере AKS.
Создайте тестовый модуль pod и подключите к нему сеанс терминала с помощью следующей
kubectl run
команды.kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Установите
curl
в pod с помощью следующейapt-get
команды.apt-get update && apt-get install -y curl
Получите доступ к адресу pod с помощью следующей
curl
команды и укажите внутренний IP-адрес.curl -L http://10.241.0.4
В следующем сжатом примере выходных данных показано демонстрационное приложение.
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]
Закройте сеанс терминала в тестовом модуле pod
exit
, с помощью которого также удаляется модуль pod.exit
Следующие шаги
В этой статье вы запланировали pod на виртуальном узле и назначили частный внутренний IP-адрес. Если вы хотите, можно создать развертывание службы и маршрутизировать трафик к модулю pod через подсистему балансировки нагрузки или контроллер входящего трафика. Дополнительные сведения см. в статье Создание контроллера входящего трафика в Службе Azure Kubernetes (AKS).
Виртуальные узлы — это один из компонентов, необходимых для масштабирования решения в AKS. Дополнительные сведения о таких решениях см. в следующих статьях:
Azure Kubernetes Service