Упражнение. Развертывание кластера службы 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.
Создание виртуальной сети и подсети
В этом упражнении вы создадите виртуальную сеть и подсеть. В реальной среде у вас может быть команда ит-отдела, ответственного за управление сетями, и они могут создавать эти ресурсы для вас.
Запустите Azure Cloud Shell.
Если вы еще не вошли в Azure, войдите в учетную запись Azure с помощью команды
az login
.az login
Выберите регион Azure, близкий к вам, например, eastus. Сохраните значение в переменной среды, чтобы использовать ее в остальной части упражнения.
AKSLocation=eastus
Создайте группу ресурсов AKSLearnдля хранения ресурсов в этом упражнении с помощью команды
az group create
.az group create --location $AKSLocation --name AKSLearn
Создайте виртуальную сеть AKSVirtualNetwork с помощью команды
az network vnet create
.az network vnet create \ --name AKSVirtualNetwork \ --resource-group AKSLearn \ --address-prefixes 10.150.0.0/16 \ --location $AKSLocation
Создайте подсеть, 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, а затем сохраняют его уникальное значение идентификатора в переменной среды для последующего использования.
Создайте управляемое удостоверение Azure AKSIdentityс помощью команды
az identity create
.az identity create \ --name AKSIdentity \ --resource-group AKSLearn
Получите идентификатор управляемого удостоверения с помощью команды
az identity show
и сохраните его в переменной среды, identityId, чтобы использовать в последующих командах.identityId=$(az identity show \ --name AKSIdentity \ --resource-group AKSLearn \ --query id \ --output tsv)
Создание кластера AKS
Получите значение идентификатора ресурса подсети с помощью команды
az network vnet subnet list
и сохраните ее в переменной среды, подсети, чтобы использовать в последующих командах.subnetId=$(az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[?name=='AKSSubnet'].id" \ --output tsv)
Создайте кластер 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
Указывает количество создаваемых узлов. После успешного развертывания кластера проверьте сведения о пуле узлов с помощью команды
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-адресов изменяется при масштабировании кластера и добавлении еще одного узла.
Масштабируйте кластер и добавьте еще один узел с помощью команды
az aks scale
.az aks scale \ --name AKSCluster \ --resource-group AKSLearn \ --node-count=4
После успешного завершения команды подтвердите новые сведения пула узлов с помощью команды
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
Проверьте, сколько 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, работающих на этом узле. Однако некоторые адреса зарезервированы, поэтому результат может быть меньше.