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


Создание и настройка кластера Службы Azure Kubernetes (AKS) для использования виртуальных узлов на портале Azure

Виртуальные узлы обеспечивают сетевое взаимодействие между подами, работающими в 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

  1. Перейдите на домашнюю страницу портал Azure.
  2. Выберите Создать ресурс>Контейнеры.
  3. В ресурсе Служба Azure Kubernetes (AKS) нажмите кнопку "Создать".
  4. На странице "Основы" настройте следующие параметры:
    • Сведения о проекте: выберите подписку Azure, а затем выберите или создайте группу ресурсов Azure, например myResourceGroup.
    • Сведения о кластере: введите имя кластера Kubernetes, например myAKSCluster. Выберите регион и версию Kubernetes для кластера AKS.
  5. Нажмите кнопку Далее: пулы узлов и установите флажок *Включить виртуальные узлы. Снимок экрана: создание кластера с включенными виртуальными узлами в портал Azure. Выделен параметр
  6. Выберите Review + create (Просмотреть и создать).
  7. После завершения проверки нажмите кнопку "Создать".

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

Этот процесс настраивает кластер для расширенной сети и виртуальных узлов для использования собственной подсети виртуальной сети Azure. Подсеть имеет делегированные разрешения для подключения ресурсов Azure между кластером AKS. Если у вас еще нет делегированной подсети, портал Azure создает и настраивает виртуальную сеть Azure и подсеть с виртуальными узлами.

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

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнить действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью. Управлять кластером Kubernetes можно при помощи kubectl, клиента командной строки Kubernetes. Клиент kubectl предварительно установлен в Azure Cloud Shell.

  1. Настройте kubectl для подключения к вашему кластеру Kubernetes с помощью команды az aks get-credentials. В следующем примере возвращаются учетные данные для имени кластера myAKSCluster в группе ресурсов myResourceGroup.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Проверьте подключение к вашему кластеру, используя 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
    

Развертывание примера приложения

  1. В 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 для использования с виртуальными узлами.

  2. Запустите приложение с помощью kubectl apply команды.

    kubectl apply -f virtual-node.yaml
    
  3. Просмотрите поды, запланированные на узле, с помощью команды kubectl get pods и аргумента -o wide.

    kubectl get pods -o wide
    

    В следующем примере показан pod, запланированный на узле virtual-node-helloworldvirtual-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.

  1. Создайте тестовый модуль pod и подключите к нему сеанс терминала с помощью следующей kubectl run команды.

    kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  2. Установите curl в pod с помощью следующей apt-get команды.

    apt-get update && apt-get install -y curl
    
  3. Получите доступ к адресу pod с помощью следующей curl команды и укажите внутренний IP-адрес.

    curl -L http://10.241.0.4
    

    В следующем сжатом примере выходных данных показано демонстрационное приложение.

    <html>
    <head>
      <title>Welcome to Azure Container Instances!</title>
    </head>
    [...]
    
  4. Закройте сеанс терминала в тестовом модуле pod exit, с помощью которого также удаляется модуль pod.

    exit
    

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

В этой статье вы запланировали под на виртуальном узле и назначили ему частный, внутренний IP-адрес. Если вы хотите, можно создать развертывание службы и маршрутизировать трафик к модулю pod через подсистему балансировки нагрузки или контроллер входящего трафика. Дополнительные сведения см. в статье Создание базового контроллера входящего трафика в Azure Kubernetes Service (AKS).

Виртуальные узлы — это один из компонентов, необходимых для масштабирования решения в AKS. Для получения дополнительной информации о решениях масштабирования см. следующие статьи: