Exercício – Implantar um cluster do Serviço de Kubernetes do Azure com a CNI do Azure

Concluído

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ê.

  1. Inicialize o Azure Cloud Shell.

  2. Se você ainda não estiver conectado ao Azure, entre em sua conta do Azure usando o comando az login.

    az login
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  1. Crie uma identidade gerenciada do Azure, AKSIdentity usando o comando az identity create.

    az identity create \
        --name AKSIdentity \
        --resource-group AKSLearn
    
  2. 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

  1. 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)
    
  2. 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.
  3. 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ó.

  1. 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
    
  2. 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
    
  3. 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.