Exercício – Implantar um cluster do Serviço de Kubernetes do Azure com a CNI do Azure
Observação
Este exercício é opcional. Para concluir este exercício, será necessário criar uma assinatura do Azure antes de começar. Se você não tiver uma conta do Azure ou não quiser criar uma no momento, poderá ler as instruções para entender as informações que estão sendo apresentadas.
Neste exercício, você implantará redes virtuais, sub-redes e identidades e, em seguida, um cluster do AKS (Serviço de Kubernetes do Azure) usando o plug-in de rede do CNI (Interface de Rede de Contêiner) do Azure.
Você entrou em contato com o departamento de TI da sua empresa e forneceu as informações coletadas sobre os requisitos do aplicativo, o dimensionamento da VM (máquina virtual) e o dimensionamento da rede. O departamento de TI forneceu alguns intervalos de endereços de rede que você pode usar para o cluster.
A tabela a seguir lista os requisitos e os endereços IP fornecidos pelo departamento de IT:
Item | Descrição | Endereços IP |
---|---|---|
Sub-rede do AKS | Endereços IP para os nós e pods no cluster. São necessários 248 endereços IP utilizáveis. | 10.150.20.0/24 |
Sub-rede do Serviço de Kubernetes | Endereços IP usados dentro do cluster para os Serviços de Kubernetes. Não deve entrar em conflito com outras redes virtuais ou redes locais. | 10.240.0.0/24 |
Endereço IP do serviço de DNS (Sistema de Nomes de Domínio) | Deve estar na sub-rede do Serviço de Kubernetes, mas não pode ser o primeiro endereço IP disponível do intervalo. | 10.240.0.10 |
- Para a sub-rede do AKS, você determinou que precisa de 248 endereços IP utilizáveis. Seu departamento de TI forneceu a rede 10.150.20.0/24, que fornece 251 endereços IP utilizáveis depois de contabilizado os cinco endereços que o Azure reserva em cada sub-rede.
- A sub-rede do serviço de Kubernetes é um grupo de endereços IP que não são usados em nenhuma outra rede virtual do Azure e não estão em conflito com nenhum intervalo de rede local. Esse intervalo de endereços só é usado dentro do cluster. Seu departamento de TI indicou que você deve usar 10.240.0.0/24.
- O endereço IP do serviço DNS é um endereço IP único dentro do intervalo de endereços da sub-rede do Serviço de Kubernetes, mas não pode ser o primeiro endereço IP desse intervalo. Você decidiu usar 10.240.0.10 como o endereço IP do DNS.
Criar a rede virtual e a sub-rede
Para esse exercício, você criará uma sub-rede e uma rede virtual. Em um ambiente do mundo real, você pode ter uma equipe do departamento de TI responsável por gerenciar as redes e essa equipe pode criar esses recursos para você.
Inicialize o Azure Cloud Shell.
Se você ainda não estiver conectado ao Azure, entre em sua conta do Azure usando o comando
az login
.az login
Escolha uma região do Azure que esteja perto de você, por exemplo, eastus. Armazene o valor em uma variável de ambiente para que você possa usá-lo no restante do exercício.
AKSLocation=eastus
Crie um grupo de recursos, AKSLearn, para manter os recursos nesse exercício usando o comando
az group create
.az group create --location $AKSLocation --name AKSLearn
Crie uma rede virtual, AKSVirtualNetwork, usando o comando
az network vnet create
.az network vnet create \ --name AKSVirtualNetwork \ --resource-group AKSLearn \ --address-prefixes 10.150.0.0/16 \ --location $AKSLocation
Crie uma sub-rede, AKSSubnet, usando o comando
az network vnet subnet create
e especifique o intervalo de endereços fornecido pelo departamento de TI.az network vnet subnet create \ --resource-group AKSLearn \ --vnet-name AKSVirtualNetwork \ --name AKSSubnet \ --address-prefixes 10.150.20.0/24
Criar uma identidade gerenciada do Azure
Você precisa criar uma identidade gerenciada do Azure para o AKS usar para acessar recursos em sua assinatura do Azure. Os dois comandos a seguir criarão uma Identidade Gerenciada do Azure e armazenarão o respectivo valor de ID exclusivo em uma variável de ambiente para uso posterior.
Crie uma identidade gerenciada do Azure, AKSIdentity usando o comando
az identity create
.az identity create \ --name AKSIdentity \ --resource-group AKSLearn
Obtenha a ID da identidade gerenciada usando o comando
az identity show
e armazene-a em uma variável de ambiente, identityId, para usar em comandos posteriores.identityId=$(az identity show \ --name AKSIdentity \ --resource-group AKSLearn \ --query id \ --output tsv)
Criar um cluster AKS
Obtenha o valor da ID de recurso da sub-rede usando o comando
az network vnet subnet list
e armazene-a em uma variável de ambiente, subnetId, para usar em comandos posteriores.subnetId=$(az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[?name=='AKSSubnet'].id" \ --output tsv)
Crie um cluster do AKS, AKSCluster, usando o comando
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
A tabela a seguir descreve os parâmetros usados no comando
az aks create
:Parâmetro Descrição --name
O nome do cluster que está sendo criado. --resource-group
O grupo de recursos em que o cluster deve ser criado. --location
A região do Azure em que o cluster deve ser criado. --network-plugin
Especifica qual plug-in de rede usar. --vnet-subnet-id
Especifica a ID do recurso da sub-rede a ser usada. --service-cidr
Especifica o intervalo de endereços do serviço de Kubernetes a ser usado. --dns-service-ip
Especifica o endereço IP do DNS a ser usado. --generate-ssh-keys
Cria um conjunto de chaves SSH que são usadas para proteger os nós. --enable-managed-identity
Habilita o uso da identidade gerenciada do Azure para obter acesso a recursos na assinatura do Azure. --assign-identity
Especifica o valor da ID da identidade gerenciada do Azure a ser usada. --node-vm-size
Especifica o tamanho da VM a ser usado. --node-count
Especifica o número de nós a serem criados. Depois que o cluster for implantado com êxito, verifique os detalhes do pool de nós usando o comando
az aks nodepool list
.az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
Seu resultado deve ser semelhante ao seguinte exemplo de saída:
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 3 30 Succeeded System
Na saída, você pode ver que há três nós do tipo Standard_F8s_v2, um valor MaxPods de 30 e o modo de pool de nós igual a
System
.
Confirmar o uso do endereço IP para o cluster
Verifique quantos endereços IP estão em uso pelo cluster usando o comando
az network vnet subnet list
.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Esse comando usa uma cadeia de caracteres de consulta do JMESPath para determinar quantos
ipConfigurations
são definidos na sub-rede. A saída máxima deve ser 93. Você implantou três nós para começar, portanto, cada nó tem um endereço IP. Você usou o valor padrão de 30 para o máximo de pods, portanto, cada nó tem 30 endereços IP pré-alocados para os pods usarem. O número total de endereços IP alocados até agora é3 x nodes + (30 pods * 3 nodes) = 93
. No entanto, alguns endereços são reservados para que sua saída possa ser menor.
Adicionar um nó extra ao cluster
Vamos ver como o uso do endereço IP é afetado por roubar o cluster e adicionar mais um nó.
Escale verticalmente o cluster e adicione mais um nó usando o comando
az aks scale
.az aks scale \ --name AKSCluster \ --resource-group AKSLearn \ --node-count=4
Quando o comando for concluído com êxito, confirme os novos detalhes do pool de nós usando o comando
az aks nodepool list
.az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
Sua saída deve ser semelhante à saída de exemplo a seguir, mostrando que agora você tem quatro nós.
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 4 30 Succeeded System
Verifique quantos endereços IP estão em uso atualmente pelo cluster usando o comando
az network vnet subnet list
.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Dessa vez, a saída máxima deve ser 124, que representa 31 unidades a mais do que na última contagem. Esse é mais um endereço IP para o novo nó, além de outros 30 endereços IP pré-alocados para os pods que serão executados nesse nó. No entanto, alguns endereços são reservados para que sua saída possa ser menor.