Guia de início rápido: criar um cluster do Azure Nexus Kubernetes usando a CLI do Azure

  • Implante um cluster Kubernetes do Azure Nexus usando a CLI do Azure.

Antes de começar

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Instale a versão mais recente das extensões necessárias da CLI do Azure.

  • Este artigo requer a versão 2.49.0 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

  • Se você tiver várias assinaturas do Azure, selecione a ID de assinatura apropriada na qual os recursos devem ser cobrados usando o az account comando.

  • Consulte a tabela VM SKU na seção de referência para obter a lista de SKUs de VM suportadas.

  • Consulte as versões suportadas do Kubernetes para obter a lista de versões suportadas do Kubernetes.

  • Crie um grupo de recursos usando o az group create comando. Um grupo de recursos do Azure é um grupo lógico no qual os recursos do Azure são implantados e gerenciados. Ao criar um grupo de recursos, você será solicitado a especificar um local. Esse local é o local de armazenamento dos metadados do grupo de recursos e onde os recursos são executados no Azure se você não especificar outra região durante a criação do recurso. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

    az group create --name myResourceGroup --location eastus
    

    O exemplo de saída a seguir é semelhante à criação bem-sucedida do grupo de recursos:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Para implementar um ficheiro Bicep ou modelo do ARM, precisa de acesso de escrita nos recursos que está a implementar e acesso a todas as operações no tipo de recurso Microsoft.Resources/deployments. Por exemplo, para implantar um cluster, você precisa das permissões Microsoft.NetworkCloud/kubernetesclusters/write e Microsoft.Resources/deployments/*. Para obter uma lista de funções e permissões, veja Funções incorporadas do Azure.

  • Você precisa da custom location ID do recurso do cluster do Azure Operator Nexus.

  • Você precisa criar várias redes de acordo com seus requisitos específicos de carga de trabalho, e é essencial ter os endereços IP apropriados disponíveis para suas cargas de trabalho. Para garantir uma implementação sem problemas, é aconselhável consultar as equipas de apoio relevantes para obter assistência.

  • Este guia de introdução parte do princípio de que possui conhecimentos básicos dos conceitos do Kubernetes. Para obter mais informações, consulte Conceitos principais do Kubernetes para o Serviço Kubernetes do Azure (AKS).

Criar um cluster do Azure Nexus Kubernetes

O exemplo a seguir cria um cluster chamado myNexusK8sCluster no grupo de recursos myResourceGroup no local eastus.

Antes de executar os comandos, você precisa definir várias variáveis para definir a configuração do cluster. Aqui estão as variáveis que você precisa definir, juntamente com alguns valores padrão que você pode usar para determinadas variáveis:

Variável Description
LOCALIZAÇÃO A região do Azure onde você deseja criar seu cluster.
RESOURCE_GROUP O nome do grupo de recursos do Azure onde você deseja criar o cluster.
SUBSCRIPTION_ID A ID da sua assinatura do Azure.
CUSTOM_LOCATION Esse argumento especifica um local personalizado da instância do Nexus.
CSN_ARM_ID CSN ID é o identificador exclusivo para a rede de serviços de nuvem que você deseja usar.
CNI_ARM_ID CNI ID é o identificador exclusivo para a interface de rede a ser usada pelo tempo de execução do contêiner.
AAD_ADMIN_GROUP_OBJECT_ID A ID do objeto do grupo Microsoft Entra que deve ter privilégios de administrador no cluster.
CLUSTER_NAME O nome que você deseja dar ao seu cluster Nexus Kubernetes.
K8S_VERSION A versão do Kubernetes que você deseja usar.
ADMIN_USERNAME O nome de usuário do administrador do cluster.
SSH_PUBLIC_KEY A chave pública SSH que é usada para comunicação segura com o cluster.
CONTROL_PLANE_COUNT O número de nós do plano de controle para o cluster.
CONTROL_PLANE_VM_SIZE O tamanho da máquina virtual para os nós do plano de controle.
INITIAL_AGENT_POOL_NAME O nome do pool de agentes inicial.
INITIAL_AGENT_POOL_COUNT O número de nós no pool de agentes inicial.
INITIAL_AGENT_POOL_VM_SIZE O tamanho da máquina virtual para o pool de agentes inicial.
POD_CIDR O intervalo de rede para os pods do Kubernetes no cluster, em notação CIDR.
SERVICE_CIDR O intervalo de rede para os serviços do Kubernetes no cluster, em notação CIDR.
DNS_SERVICE_IP O endereço IP do serviço DNS do Kubernetes.

Depois de definir essas variáveis, você pode executar o comando da CLI do Azure para criar o cluster. Adicione o --debug sinalizador no final para fornecer uma saída mais detalhada para fins de solução de problemas.

Para definir essas variáveis, use os seguintes comandos set e substitua os valores de exemplo pelos seus valores preferidos. Você também pode usar os valores padrão para algumas das variáveis, conforme mostrado no exemplo a seguir:

RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"

Importante

É essencial que você substitua os espaços reservados para CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID e AAD_ADMIN_GROUP_OBJECT_ID com seus valores reais antes de executar esses comandos.

Depois de definir essas variáveis, você pode criar o cluster do Kubernetes executando o seguinte comando da CLI do Azure:

az networkcloud kubernetescluster create \
  --name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --location "${LOCATION}" \
  --kubernetes-version "${K8S_VERSION}" \
  --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
  --admin-username "${ADMIN_USERNAME}" \
  --ssh-key-values "${SSH_PUBLIC_KEY}" \
  --control-plane-node-configuration \
    count="${CONTROL_PLANE_COUNT}" \
    vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
    ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
  --network-configuration \
    cloud-services-network-id="${CSN_ARM_ID}" \
    cni-network-id="${CNI_ARM_ID}" \
    pod-cidrs="[${POD_CIDR}]" \
    service-cidrs="[${SERVICE_CIDR}]" \
    dns-service-ip="${DNS_SERVICE_IP}"

Se não houver capacidade suficiente para implantar os nós de cluster solicitados, uma mensagem de erro será exibida. No entanto, esta mensagem não fornece detalhes sobre a capacidade disponível. Ele afirma que a criação do cluster não pode prosseguir devido à capacidade insuficiente.

Nota

O cálculo de capacidade leva em conta todo o cluster de plataforma, em vez de ser limitado a racks individuais. Portanto, se um pool de agentes for criado em uma zona (onde um rack é igual a uma zona) com capacidade insuficiente, mas outra zona tiver capacidade suficiente, a criação do cluster continuará, mas acabará expirando. Essa abordagem para verificação de capacidade só faz sentido se uma zona específica não for especificada durante a criação do cluster ou pool de agentes.

Após alguns minutos, o comando conclui e retorna informações sobre o cluster. Para obter opções mais avançadas, consulte Guia de início rápido: implantar um cluster do Kubernetes do Azure Nexus usando o Bicep.

Rever os recursos implementados

Após a conclusão da implantação, você pode exibir os recursos usando a CLI ou o portal do Azure.

Para exibir os detalhes do myNexusK8sCluster cluster no myResourceGroup grupo de recursos, execute o seguinte comando da CLI do Azure:

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

Além disso, para obter uma lista de nomes de pool de agentes associados ao myNexusK8sCluster myResourceGroup cluster no grupo de recursos, você pode usar o seguinte comando da CLI do Azure.

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

Ligar ao cluster

Agora que o cluster Nexus Kubernetes foi criado com êxito e conectado ao Azure Arc, você pode se conectar facilmente a ele usando o recurso de conexão de cluster. A conexão de cluster permite que você acesse e gerencie seu cluster com segurança de qualquer lugar, tornando-o conveniente para tarefas interativas de desenvolvimento, depuração e administração de cluster.

Para obter informações mais detalhadas sobre as opções disponíveis, consulte Conectar-se a um cluster Kubernetes do Nexus do Operador do Azure.

Nota

Quando você cria um cluster Nexus Kubernetes, o Nexus cria automaticamente um grupo de recursos gerenciado dedicado a armazenar os recursos do cluster, dentro desse grupo, o recurso de cluster conectado ao Arc é estabelecido.

Para acessar o cluster, você precisa configurar a conexão kubeconfigdo cluster . Depois de iniciar sessão na CLI do Azure com a entidade Microsoft Entra relevante, pode obter o kubeconfig necessário para comunicar com o cluster a partir de qualquer lugar, mesmo fora da firewall que o rodeia.

  1. Definir CLUSTER_NAME, RESOURCE_GROUP e SUBSCRIPTION_ID variáveis.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Consultar grupo de recursos gerenciados com az e armazenar em MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. O comando a seguir inicia um proxy connectedk8s que permite que você se conecte ao servidor de API do Kubernetes para o cluster Nexus Kubernetes especificado.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Use kubectl para enviar solicitações para o cluster:

    kubectl get pods -A
    

    Agora você deve ver uma resposta do cluster contendo a lista de todos os nós.

Nota

Se você vir a mensagem de erro "Falha ao postar token de acesso ao proxy do clienteFalha ao se conectar ao MSI", talvez seja necessário executar um az login para autenticar novamente com o Azure.

Adicionar um pool de agentes

O cluster criado na etapa anterior tem um único pool de nós. Vamos adicionar um segundo pool de agentes usando o az networkcloud kubernetescluster agentpool create comando. O exemplo a seguir cria um pool de agentes chamado myNexusK8sCluster-nodepool-2:

Você também pode usar os valores padrão para algumas das variáveis, conforme mostrado no exemplo a seguir:

RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"

Depois de definir essas variáveis, você pode adicionar um pool de agentes executando o seguinte comando da CLI do Azure:

az networkcloud kubernetescluster agentpool create \
  --name "${AGENT_POOL_NAME}" \
  --kubernetes-cluster-name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --count "${AGENT_POOL_COUNT}" \
  --mode "${AGENT_POOL_MODE}" \
  --vm-sku-name "${AGENT_POOL_VM_SIZE}"

Após alguns minutos, o comando é concluído e retorna informações sobre o pool de agentes. Para obter opções mais avançadas, consulte Guia de início rápido: implantar um cluster do Kubernetes do Azure Nexus usando o Bicep.

Nota

Você pode adicionar vários pools de agentes durante a criação inicial do próprio cluster usando as configurações iniciais do pool de agentes. No entanto, se você quiser adicionar pools de agentes após a criação inicial, poderá utilizar o comando acima para criar pools de agentes adicionais para seu cluster Nexus Kubernetes.

O exemplo de saída a seguir se assemelha à criação bem-sucedida do pool de agentes.

$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count    Location    Mode    Name                          ProvisioningState    ResourceGroup    VmSkuName
-------  ----------  ------  ----------------------------  -------------------  ---------------  -----------
1        eastus      System  myNexusK8sCluster-nodepool-1  Succeeded            myResourceGroup  NC_P10_56_v1
1        eastus      User    myNexusK8sCluster-nodepool-2  Succeeded            myResourceGroup  NC_P10_56_v1

Clean up resources (Limpar recursos)

Quando já não for necessário, elimine o grupo de recursos. O grupo de recursos e todos os recursos no grupo de recursos são excluídos.

Use o comando az group delete para remover o grupo de recursos, o cluster Kubernetes e todos os recursos relacionados, exceto os recursos de rede do Operator Nexus.

az group delete --name myResourceGroup --yes --no-wait

Próximos passos

Agora você pode implantar os CNFs diretamente por meio da conexão de cluster ou por meio do Azure Operator Service Manager.