Упражнение. Развертывание кластера службы Azure Kubernetes с помощью Azure CNI

Завершено

Заметка

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

В этом упражнении вы развертываете виртуальные сети, подсети и идентификаторы, а затем развертываете кластер службы Azure Kubernetes (AKS) с помощью плагина Интерфейса сети контейнеров Azure (CNI).

Вы подошли к ИТ-отделу вашей компании и предоставили сведения о требованиях к приложению, размера виртуальной машины и размера сети. ИТ-отдел предоставил некоторые диапазоны сетевых адресов, которые можно использовать для кластера.

В следующей таблице перечислены требования и IP-адреса, предоставляемые ИТ-отделом:

Пункт Описание IP-адреса
Подсеть AKS IP-адреса для узлов и подов в кластере. Необходимы 248 доступных IP-адресов. 10.150.20.0/24
Подсеть службы Kubernetes IP-адреса, используемые в кластере для служб Kubernetes. Не должно конфликтовать с другими виртуальными сетями или внутренними сетями. 10.240.0.0/24
IP-адрес службы доменных имен (DNS) Должен находиться в подсети службы Kubernetes, но не может быть первым IP-адресом из доступного диапазона. 10.240.0.10
  • Для подсети AKSвы определили, что вам потребуется 248 доступных IP-адресов. Ваш ИТ-отдел предоставил сеть 10.150.20.0/24, которая предоставляет 251 используемых IP-адресов после учета пяти адресов, которые Azure резервирует в каждой подсети.
  • Подсеть службы Kubernetes — это группа IP-адресов, которые не используются в других виртуальных сетях Azure и не конфликтуют с диапазонами локальных сетей. Этот диапазон адресов используется только в кластере. ИТ-отдел указал, что следует использовать 10.240.0.0/24.
  • IP-адрес DNS службы — это один из IP-адресов в диапазоне адресов подсети службы Kubernetes , но он не может быть первым IP-адресом в этом диапазоне. Вы решили использовать 10.240.0.10 в качестве IP-адреса DNS.

Создание виртуальной сети и подсети

В этом упражнении вы создадите виртуальную сеть и подсеть. В реальной среде у вас может быть команда ит-отдела, ответственного за управление сетями, и они могут создавать эти ресурсы для вас.

  1. Запустите Azure Cloud Shell.

  2. Если вы еще не вошли в Azure, войдите в учетную запись Azure с помощью команды az login.

    az login
    
  3. Выберите регион Azure, близкий к вам, например, eastus. Сохраните значение в переменной среды, чтобы использовать ее в остальной части упражнения.

    AKSLocation=eastus
    
  4. Создайте группу ресурсов AKSLearnдля хранения ресурсов в этом упражнении с помощью команды az group create.

    az group create --location $AKSLocation --name AKSLearn
    
  5. Создайте виртуальную сеть AKSVirtualNetwork с помощью команды az network vnet create.

    az network vnet create \
        --name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --address-prefixes 10.150.0.0/16  \
        --location $AKSLocation
    
  6. Создайте подсеть, AKSSubnet, используя команду az network vnet subnet create и укажите диапазон адресов, предоставляемый ИТ-отделом.

    az network vnet subnet create \
        --resource-group AKSLearn \
        --vnet-name AKSVirtualNetwork \
        --name AKSSubnet \
        --address-prefixes 10.150.20.0/24
    

Создание управляемого идентификатора Azure

Чтобы получить доступ к ресурсам в подписке Azure, необходимо создать управляемое удостоверение Azure для AKS. Следующие две команды создают управляемое удостоверение Azure, а затем сохраняют его уникальное значение идентификатора в переменной среды для последующего использования.

  1. Создайте управляемое удостоверение Azure AKSIdentityс помощью команды az identity create.

    az identity create \
        --name AKSIdentity \
        --resource-group AKSLearn
    
  2. Получите идентификатор управляемого удостоверения с помощью команды az identity show и сохраните его в переменной среды, identityId, чтобы использовать в последующих командах.

    identityId=$(az identity show \
        --name AKSIdentity \
        --resource-group AKSLearn \
        --query id \
        --output tsv)
    

Создание кластера AKS

  1. Получите значение идентификатора ресурса подсети с помощью команды az network vnet subnet list и сохраните ее в переменной среды, подсети, чтобы использовать в последующих командах.

    subnetId=$(az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[?name=='AKSSubnet'].id" \
        --output tsv)
    
  2. Создайте кластер AKS AKSClusterс помощью команды az aks create.

    az aks create \
        --name AKSCluster \
        --resource-group AKSLearn \
        --location $AKSLocation \
        --network-plugin azure \
        --vnet-subnet-id $subnetId \
        --service-cidr 10.240.0.0/24 \
        --dns-service-ip 10.240.0.10 \
        --generate-ssh-keys \
        --enable-managed-identity \
        --assign-identity $identityId \
        --node-vm-size  Standard_F8s_v2 \
        --node-count 3
    

    В следующей таблице описаны параметры, используемые в команде az aks create:

    Параметр Описание
    --name Имя создаваемого кластера.
    --resource-group Группа ресурсов, в которой должен быть создан кластер.
    --location Регион Azure, в котором должен быть создан кластер.
    --network-plugin Указывает, какой сетевой подключаемый модуль следует использовать.
    --vnet-subnet-id Указывает идентификатор ресурса используемой подсети.
    --service-cidr Указывает используемый диапазон адресов службы Kubernetes.
    --dns-service-ip Указывает используемый IP-адрес DNS.
    --generate-ssh-keys Создает набор ключей SSH, используемых для защиты узлов.
    --enable-managed-identity Позволяет использовать управляемое удостоверение Azure для доступа к ресурсам в подписке Azure.
    --assign-identity Указывает значение идентификатора управляемого удостоверения Azure для использования.
    --node-vm-size Указывает размер используемой виртуальной машины.
    --node-count Указывает количество создаваемых узлов.
  3. После успешного развертывания кластера проверьте сведения о пуле узлов с помощью команды az aks nodepool list.

    az aks nodepool list \
        --cluster-name AKSCluster \
        --resource-group AKSLearn \
        --output table
    

    Выходные данные должны выглядеть примерно так:

    Name       OsType    VmSize           Count    MaxPods    ProvisioningState    Mode
    ---------  --------  ---------------  -------  ---------  -------------------  ------
    nodepool1  Linux     Standard_F8s_v2  3        30         Succeeded            System
    

    В выходных данных можно увидеть три узла типа Standard_F8s_v2, значение MaxPods 30 и режим пула узлов System.

Подтверждение использования IP-адресов для кластера

  • Проверьте, сколько IP-адресов используется кластером с помощью команды az network vnet subnet list.

    az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[].ipConfigurations.length(@)" \
        --output table
    

    Эта команда использует строку запроса JMESPath, чтобы определить, сколько ipConfigurations определено в данной подсети. Максимальная мощность должна составлять 93. Вы развернули три узла для начала, поэтому каждый узел имеет один IP-адрес. Вы использовали значение по умолчанию 30 для максимальных модулей, поэтому каждый узел имеет 30 IP-адресов, предварительно выделенных для использования модулями. Общее количество выделенных IP-адресов на данный момент составляет 3 x nodes + (30 pods * 3 nodes) = 93. Однако некоторые адреса зарезервированы, поэтому объем выходных данных может быть меньше.

Добавление дополнительного узла в кластер

Посмотрим, как использование IP-адресов изменяется при масштабировании кластера и добавлении еще одного узла.

  1. Масштабируйте кластер и добавьте еще один узел с помощью команды az aks scale.

    az aks scale \
        --name AKSCluster \
        --resource-group AKSLearn \
        --node-count=4
    
  2. После успешного завершения команды подтвердите новые сведения пула узлов с помощью команды az aks nodepool list.

    az aks nodepool list \
        --cluster-name AKSCluster \
        --resource-group AKSLearn \
        --output table
    

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

    Name       OsType    VmSize           Count    MaxPods    ProvisioningState    Mode
    ---------  --------  ---------------  -------  ---------  -------------------  ------
    nodepool1  Linux     Standard_F8s_v2  4        30         Succeeded            System
    
  3. Проверьте, сколько IP-адресов теперь используется кластером с помощью команды az network vnet subnet list.

    az network vnet subnet list \
        --vnet-name AKSVirtualNetwork \
        --resource-group AKSLearn \
        --query "[].ipConfigurations.length(@)" \
        --output table
    

    На этот раз максимальный объем выходных данных должен быть 124, что больше 31, чем в последний раз. Это еще один IP-адрес для нового узла, а также еще 30 IP-адресов, предварительно размещенных для модулей pod, работающих на этом узле. Однако некоторые адреса зарезервированы, поэтому результат может быть меньше.