Partilhar via


Criar e configurar um cluster dos Serviços Kubernetes do Azure (AKS) para usar nós virtuais no portal do Azure

Os nós virtuais habilitam a comunicação de rede entre pods que são executados nas Instâncias de Contentor do Azure (ACI) e nos clusters do Serviço Kubernetes do Azure (AKS). Para fornecer essa comunicação, uma sub-rede de rede virtual é criada e permissões delegadas são atribuídas. Os nós virtuais só funcionam com clusters AKS criados usando redes avançadas (Azure CNI). Os clusters AKS são criados com rede básica (kubenet) por padrão.

Este artigo mostra como criar uma rede virtual e sub-redes e, em seguida, implantar um cluster AKS que usa rede avançada usando o portal do Azure.

Nota

Para obter uma visão geral da disponibilidade e limitações dos nós virtuais nas regiões, consulte Usar nós virtuais no AKS.

Antes de começar

Você precisa do provedor de serviços ACI registrado em sua assinatura.

  • Verifique o status do registro do provedor ACI usando o az provider list comando.

    az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
    

    A saída de exemplo a seguir mostra que o provedor Microsoft.ContainerInstance está registrado:

    Namespace                    RegistrationState    RegistrationPolicy
    ---------------------------  -------------------  --------------------
    Microsoft.ContainerInstance  Registered           RegistrationRequired
    
  • Se o provedor for NotRegistered, registe-o com o comando az provider register.

    az provider register --namespace Microsoft.ContainerInstance
    

Criar um cluster do AKS

  1. Navegue até a home page do portal do Azure.
  2. Selecione Criar um recurso>Contêineres.
  3. No recurso Serviço Kubernetes do Azure (AKS), selecione Criar.
  4. Na página Noções básicas, configure as seguintes opções:
    • Detalhes do projeto: selecione uma assinatura do Azure e, em seguida, selecione ou crie um grupo de recursos do Azure, como myResourceGroup.
    • Detalhes do cluster: insira um nome de cluster do Kubernetes, como myAKSCluster. Selecione uma região e uma versão do Kubernetes para o cluster AKS.
  5. Selecione Next: Node pools e marque *Enable virtual nodes. Captura de tela que mostra a criação de um cluster com nós virtuais habilitados no portal do Azure. A opção 'Ativar nós virtuais' é realçada.
  6. Selecione Rever + criar.
  7. Após a conclusão da validação, selecione Criar.

Por padrão, esse processo cria uma identidade de cluster gerenciado, que é usada para comunicação de cluster e integração com outros serviços do Azure. Para obter mais informações, consulte Usar identidades gerenciadas. Você também pode usar um service principal como sua identidade de cluster.

Esse processo configura o cluster para rede avançada e os nós virtuais para usar sua própria sub-rede de rede virtual do Azure. A sub-rede tem permissões delegadas para conectar recursos do Azure entre o cluster AKS. Se você ainda não tiver uma sub-rede delegada, o portal do Azure criará e configurará uma rede virtual e uma sub-rede do Azure com os nós virtuais.

Ligar ao cluster

O Azure Cloud Shell é um shell interativo gratuito que você pode usar para executar as etapas neste artigo. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta. Para gerir um cluster de Kubernetes, utilize kubectl, o cliente de linha de comandos do Kubernetes. O cliente kubectl está pré-instalado no Azure Cloud Shell.

  1. Configure kubectl para se conectar ao cluster do Kubernetes usando o az aks get-credentials comando. O exemplo seguinte obtém credenciais para o nome do cluster myAKSCluster no grupo de recursos denominado myResourceGroup:

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Verifique a conexão com o cluster usando o kubectl get nodes.

    kubectl get nodes
    

    A saída de exemplo a seguir mostra o único nó de VM criado e o nó Linux virtual chamado virtual-node-aci-linux:

    NAME                           STATUS    ROLES     AGE       VERSION
    virtual-node-aci-linux         Ready     agent     28m       v1.11.2
    aks-agentpool-14693408-0       Ready     agent     32m       v1.11.2
    

Implantar um aplicativo de exemplo

  1. No Azure Cloud Shell, crie um arquivo nomeado virtual-node.yaml e copie no seguinte YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aci-helloworld
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aci-helloworld
      template:
        metadata:
          labels:
            app: aci-helloworld
        spec:
          containers:
          - name: aci-helloworld
            image: mcr.microsoft.com/azuredocs/aci-helloworld
            ports:
            - containerPort: 80
          nodeSelector:
            kubernetes.io/role: agent
            beta.kubernetes.io/os: linux
            type: virtual-kubelet
          tolerations:
          - key: virtual-kubelet.io/provider
            operator: Exists
    

    O YAML define um nodeSelector e uma toleration, que permitem que o pod seja alocado no nó virtual. O pod recebe um endereço IP interno da sub-rede de rede virtual do Azure delegada para uso com nós virtuais.

  2. Execute o aplicativo usando o kubectl apply comando.

    kubectl apply -f virtual-node.yaml
    
  3. Veja os pods programados no nó usando o comando kubectl get pods com o argumento -o wide.

    kubectl get pods -o wide
    

    A saída de exemplo a seguir mostra o pod virtual-node-helloworld agendado no nó virtual-node-linux.

    NAME                                     READY     STATUS    RESTARTS   AGE       IP           NODE
    virtual-node-helloworld-9b55975f-bnmfl   1/1       Running   0          4m        10.241.0.4   virtual-node-aci-linux
    

Nota

Se você usar imagens armazenadas no Registro de Contêiner do Azure, configure e use um segredo do Kubernetes. Uma limitação dos nós virtuais é que não se pode usar a autenticação principal do serviço Entra do Microsoft integrada. Se você não usar um segredo, os pods agendados em nós virtuais não serão iniciados e relatarão o erro HTTP response status code 400 error code "InaccessibleImage".

Teste o pod do nó virtual

Para testar o pod em execução no nó virtual, acesse o aplicativo de demonstração com um cliente web. O pod recebe um endereço IP interno, para que você possa testar facilmente a conectividade de outro pod no cluster AKS.

  1. Crie um pod de teste e anexe uma sessão de terminal a ele usando o comando a seguir kubectl run .

    kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  2. Instale curl no pod usando o seguinte apt-get comando.

    apt-get update && apt-get install -y curl
    
  3. Acesse o endereço do seu pod usando o seguinte curl comando e forneça seu endereço IP interno.

    curl -L http://10.241.0.4
    

    O exemplo de saída consolidado a seguir mostra a aplicação de demonstração.

    <html>
    <head>
      <title>Welcome to Azure Container Instances!</title>
    </head>
    [...]
    
  4. Feche a sessão do terminal para o seu pod de teste com exit, o que também elimina o pod.

    exit
    

Próximos passos

Neste artigo, você agendou um pod no nó virtual e atribuiu um endereço IP interno privado. Se desejar, pode alternativamente implantar um serviço e rotear o tráfego para o seu pod através de um balanceador de carga ou um controlador de ingressos. Para obter mais informações, consulte Criar um controlador de entrada básico no AKS.

Os nós virtuais são um componente de uma solução de dimensionamento no AKS. Para obter mais informações sobre soluções de dimensionamento, consulte os seguintes artigos: