Exercício - Implantar um cluster do Serviço Kubernetes do Azure com o Azure CNI
Nota
Este exercício é opcional. Se quiser concluir este exercício, terá de criar uma subscrição do Azure antes de começar. Se você não tiver uma conta do Azure ou não quiser criar uma no momento, leia as instruções para entender as informações que estão sendo apresentadas.
Neste exercício, você implanta redes virtuais, sub-redes e identidades e, em seguida, implanta um cluster do Serviço Kubernetes do Azure (AKS) usando o plug-in 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 máquina virtual (VM) 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 endereços IP fornecidos pelo departamento de TI:
Item | Description | Endereços IP |
---|---|---|
Sub-rede AKS | Endereços IP para os nós e pods no cluster. 248 endereços IP utilizáveis necessários. | 10.150.20.0/24 |
Sub-rede de serviço do Kubernetes | Endereços IP usados dentro do cluster para serviços 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 DNS (Sistema de Nomes de Domínio) | Deve estar na sub-rede do serviço Kubernetes, mas não pode ser o primeiro endereço IP do intervalo disponível. | 10.240.0.10 |
- Para a sub-rede AKS, você determinou que precisa de 248 endereços IP utilizáveis. Seu departamento de TI deu à rede 10.150.20.0/24, que fornece 251 endereços IP utilizáveis depois de contabilizar os cinco endereços que o Azure reserva em cada sub-rede.
- A sub-rede do serviço Kubernetes é um grupo de endereços IP que não são usados em nenhuma outra rede virtual do Azure e não entram 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 único endereço IP dentro do intervalo de endereços da sub-rede do serviço Kubernetes, mas não pode ser o primeiro endereço IP nesse intervalo. Você decidiu usar 10.240.0.10 como o endereço IP DNS.
Criar a rede virtual e a sub-rede
Para este exercício, você cria uma rede virtual e uma sub-rede. Em um ambiente real, você pode ter uma equipe em seu departamento de TI responsável pelo gerenciamento de redes e eles podem criar esses recursos para você.
Inicie o Azure Cloud Shell.
Se você ainda não estiver conectado ao Azure, entre na sua conta do Azure usando o
az login
comando.az login
Escolha uma região do Azure próxima a você, por exemplo , eastus. Armazene o valor em uma variável de ambiente para que você possa usá-lo no resto do exercício.
AKSLocation=eastus
Crie um grupo de recursos, AKSLearn, para manter os recursos neste exercício usando o
az group create
comando.az group create --location $AKSLocation --name AKSLearn
Crie uma rede virtual, AKSVirtualNetwork, usando o
az network vnet create
comando.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
az network vnet subnet create
comando 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 criam uma Identidade Gerenciada do Azure e, em seguida, armazenam seu valor de ID exclusivo em uma variável de ambiente para uso posterior.
Crie uma identidade gerenciada do Azure, AKSIdentity, usando o
az identity create
comando.az identity create \ --name AKSIdentity \ --resource-group AKSLearn
Obtenha a ID da identidade gerenciada usando o
az identity show
comando 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 do AKS
Obtenha o valor de ID do recurso da sub-rede usando o
az network vnet subnet list
comando e armazene-o 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 AKS, AKSCluster, usando o
az aks create
comando.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
az aks create
seguir descreve os parâmetros usados no comando:Parâmetro Description --name
O nome do cluster que está sendo criado. --resource-group
O grupo de recursos onde o cluster deve ser criado. --location
A região do Azure onde 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 de serviço do Kubernetes a ser usado. --dns-service-ip
Especifica o endereço IP 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
Permite o uso da identidade gerenciada do Azure para acesso a recursos na assinatura do Azure. --assign-identity
Especifica o valor de 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
az aks nodepool list
comando.az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
Sua saída deve ser semelhante à saída de exemplo a seguir:
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 um modo de pool de nós de
System
.
Confirmar o uso do endereço IP para o cluster
Verifique quantos endereços IP estão em uso pelo cluster usando o
az network vnet subnet list
comando.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Este comando usa uma cadeia de caracteres de consulta 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, para que cada nó tenha um endereço IP. Você usou o valor padrão de 30 para os pods máximos, portanto, cada nó tem 30 endereços IP pré-alocados para pods usarem. O número total de endereços IP atribuídos até à data é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 pelo roubo do cluster e pela adição de mais um nó.
Aumente a escala do cluster e adicione mais um nó usando o
az aks scale
comando.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
az aks nodepool list
comando.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 agora em uso pelo cluster usando o
az network vnet subnet list
comando.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Desta vez, a saída máxima deve ser 124, ou seja, 31 a mais do que da última vez. Esse é mais um endereço IP para o novo nó, além de outros 30 endereços IP pré-alocados para os pods que são executados nesse nó. No entanto, alguns endereços são reservados para que sua saída possa ser menor.