Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Виртуальные узлы обеспечивают сетевое взаимодействие между подами, работающими в Azure Container Instances (ACI), и кластерами Azure Kubernetes Service (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
для подключения к вашему кластеру Kubernetes с помощью командыaz aks get-credentials
. В следующем примере возвращаются учетные данные для имени кластера 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
Просмотрите поды, запланированные на узле, с помощью команды
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. Если вы не используете секрет, pods, запланированные на виртуальных узлах, не запускаются и сообщают об ошибке 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
Следующие шаги
В этой статье вы запланировали под на виртуальном узле и назначили ему частный, внутренний IP-адрес. Если вы хотите, можно создать развертывание службы и маршрутизировать трафик к модулю pod через подсистему балансировки нагрузки или контроллер входящего трафика. Дополнительные сведения см. в статье Создание базового контроллера входящего трафика в Azure Kubernetes Service (AKS).
Виртуальные узлы — это один из компонентов, необходимых для масштабирования решения в AKS. Для получения дополнительной информации о решениях масштабирования см. следующие статьи:
Azure Kubernetes Service