Exercício - Implantar um cluster do Serviço Kubernetes do Azure com o Azure CNI

Concluído

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

  1. Inicie o Azure Cloud Shell.

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

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

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

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

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

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