Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Durante todo o ciclo de vida do cluster do AKS (Serviço de Kubernetes do Azure), você eventualmente precisa acessar diretamente um nó do AKS. Esse acesso pode ser para operações de solução de problemas, coleta de logs ou manutenção.
Este artigo descreve duas opções de conexão segura com os nós Linux e Windows do AKS. Um requer que você tenha acesso à API do Kubernetes e o outro é por meio da API DO ARM do AKS, que fornece informações de IP privado diretas. Por motivos de segurança, os nós do AKS não são expostos à Internet. Em vez disso, para se conectar diretamente a quaisquer nós do AKS, você precisa usar um ou o endereço IP privado do host.
Acessar nós com a API do Kubernetes
Esse método requer o comando.
Antes de começar
Este guia mostra como criar uma conexão com um nó do AKS e atualizar a chave SSH do cluster do AKS. Para seguir estas etapas, você precisa CLI do Azure versão 2.0.64 ou posterior. Execute para verificar a versão. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure.
Conclua estas etapas se você não tiver uma chave SSH. Crie uma chave SSH dependendo da imagem do SO do seu nó, para macOS e Linux ou Windows. Salve o par de chaves no formato OpenSSH e evite formatos sem suporte, como . Em seguida, consulte Gerenciar a configuração de SSH para adicionar a chave ao cluster.
Linux e macOS
Usuários de Linux e macOS podem acessar seu node usando ou seu endereço IP privado. Usuários do Windows deveriam pular para a seção de proxy do Windows Server para obter uma solução alternativa para o SSH por meio de proxy.
Conectar-se com o kubectl debug
Para criar uma conexão de shell interativa, use o comando para executar um contêiner privilegiado em seu nó.
Para listar os nós, use o comando :
kubectl get nodes -o wideSaída de exemplo:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE aks-nodepool1-37663765-vmss000000 Ready agent 166m v1.25.6 10.224.0.33 <none> Ubuntu 22.04.2 LTS aks-nodepool1-37663765-vmss000001 Ready agent 166m v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS aksnpwin000000 Ready agent 160m v1.25.6 10.224.0.62 <none> Windows Server 2022 DatacenterUse o comando para iniciar um contêiner privilegiado em seu nó e conectar-se a ele.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36Saída de exemplo:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#Agora você tem acesso ao nó por meio de um contêiner privilegiado como um pod de depuração.
Observação
Você pode interagir com a sessão de nó executando no contêiner privilegiado.
Sair do modo de depuração kubectl
Quando terminar de usar o nó, insira o comando para encerrar a sessão interativa do shell. Depois que a sessão de contêiner interativa for fechada, exclua o pod de depuração usado com .
kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
Conexão de proxy para SSH no Windows Server
Siga estas etapas como uma solução alternativa para se conectar ao SSH em um nó do Windows Server.
Criar um servidor proxy
Neste momento, você não pode se conectar a um nó Windows Server diretamente usando kubectl debug. Em vez disso, primeiro você precisa se conectar a outro nó no cluster com kubectl e, em seguida, conectar-se ao nó do Windows Server desse nó usando SSH.
Para se conectar a outro nó no cluster, use o comando . Para obter mais informações, siga as etapas anteriores na seção kubectl. Crie uma conexão SSH de outro nó para o nó Windows Server, usando as chaves SSH fornecidas na criação do cluster do AKS e o endereço IP interno do nó Windows Server.
Importante
As etapas a seguir para criar a conexão SSH com o nó do Windows Server de outro nó só poderão ser usadas se você criou o cluster do AKS usando a CLI do Azure com o parâmetro --generate-ssh-keys. Se você quiser usar suas próprias chaves SSH, poderá usar o para gerenciar chaves SSH em um cluster do AKS existente. Para obter mais informações, consulte gerenciar o acesso ao nó SSH.
Observação
Se o nó de proxy do Linux estiver inativo ou sem resposta, use o método do Azure Bastion para se conectar.
Use o comando para iniciar um contêiner privilegiado em seu nó proxy (Linux) e conectar-se a ele.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36Saída de exemplo:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#Abra uma nova janela de terminal e use o comando para obter o nome do pod iniciado por .
kubectl get podsSaída de exemplo:
NAME READY STATUS RESTARTS AGE node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21sNa saída de exemplo, é o nome do pod iniciado por .
Use o comando para abrir uma conexão com o pod implantado:
kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22Saída de exemplo:
Forwarding from 127.0.0.1:2022 -> 22 Forwarding from [::1]:2022 -> 22O exemplo anterior começa a encaminhar o tráfego de rede da porta no seu computador de desenvolvimento para a porta no pod implantado. Ao usar para abrir uma conexão e encaminhar o tráfego da rede, a conexão permanecerá aberta até que você interrompa o comando .
Abra um novo terminal e execute o comando
kubectl get nodespara mostrar o endereço IP interno do servidor Windows Server:kubectl get nodes -o custom-columns='NAME:metadata.name,INTERNAL_IP:status.addresses[?(@.type == "InternalIP")].address'Saída de exemplo:
NAME INTERNAL_IP aks-nodepool1-19409214-vmss000003 10.224.0.8 aksnpwin000000 10.224.0.62No exemplo anterior,
10.224.0.62é o endereço IP interno do nó Windows Server.Crie uma conexão SSH com o nó Windows Server usando o endereço IP interno e conecte-se à porta
22por meio da porta2022em seu computador de desenvolvimento. O nome de usuário padrão para os nós do Serviço de Kubernetes do Azure é azureuser. Aceite o prompt para continuar com a conexão. Em seguida, você verá o prompt do Bash do seu nó do Windows Server:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.224.0.62Saída de exemplo:
The authenticity of host '10.224.0.62 (10.224.0.62)' can't be established. ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG. Are you sure you want to continue connecting (yes/no)? yesObservação
Se preferir usar autenticação de senha, inclua o parâmetro . Por exemplo:
ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
Usar um contêiner de processo de host para acessar um nó do Windows
Execute o script a seguir para criar . No script, substitua
AKSWINDOWSNODENAMEpelo nome do nó do Windows do AKS.Essa especificação usa a imagem base do nanoserver. A imagem base não tem o PowerShell, mas como ela é executada como um HPC (contêiner de processo de host), o PowerShell está disponível na VM subjacente.
apiVersion: v1 kind: Pod metadata: labels: pod: hpc name: hpc spec: securityContext: windowsOptions: hostProcess: true runAsUserName: "NT AUTHORITY\\SYSTEM" hostNetwork: true containers: - name: hpc image: mcr.microsoft.com/windows/nanoserver:ltsc2022 # Use nanoserver:1809 for WS2019 command: - powershell.exe - -Command - "Start-Sleep 2147483" imagePullPolicy: IfNotPresent nodeSelector: kubernetes.io/os: windows kubernetes.io/hostname: AKSWINDOWSNODENAME tolerations: - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - effect: NoSchedule key: node.kubernetes.io/network-unavailable operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: ExistsExecute
kubectl apply -f hostprocess.yamlpara implantar o Windows HPC no nó especificado do Windows.Use .
Você pode executar qualquer comando do PowerShell dentro do contêiner HPC para acessar o nó Windows.
Observação
Você precisa mudar a pasta raiz para C:\ dentro do contêiner HPC para acessar os arquivos no nó do Windows.
SSH com Azure Bastion
Se o nó proxy do Linux não for acessível, usar o Azure Bastion como proxy será uma alternativa. Esse método exige que você configure um host Azure Bastion para a rede virtual na qual o cluster reside. Consulte Conectar com Azure Bastion para obter mais detalhes.
SSH utilizando IPs privados da rede virtual do cluster
Para conveniência, os nós do AKS são expostos na rede virtual do cluster por meio de endereços IP privados. No entanto, você precisa estar na rede virtual do cluster para SSH no nó.
Se você não tiver acesso à API do Kubernetes, poderá obter acesso a propriedades como e por meio da API do pool de agentes do AKS , (disponível em versões estáveis ou superiores) para se conectar aos nós do AKS. Obtenha IPs privados usando o comando , direcionando todas as VMs em um pool de nós específico com o sinalizador .
az aks machine list --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name nodepool1 -o tableA saída de exemplo a seguir mostra os endereços IP internos de todos os nós no pool de nós:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4 aks-nodepool1-33555069-vmss000001 10.224.0.6 IPv4 aks-nodepool1-33555069-vmss000002 10.224.0.4 IPv4Para direcionar um nó específico dentro do pool de nós, use o sinalizador :
az aks machine show --cluster-name myAKScluster --nodepool-name nodepool1 -g myResourceGroup --machine-name aks-nodepool1-33555069-vmss000000 -o tableA saída de exemplo a seguir mostra o endereço IP interno do nó especificado:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4SSH para o nó usando o endereço IP privado obtido na etapa anterior. Esta etapa se aplica somente a nós do Linux.
ssh -i /path/to/private_key.pem azureuser@10.224.0.33
Próximas etapas
Se você precisar de mais dados de solução de problemas, poderá exibir os logs do kubelet ou exibir os logs do plano de controle do Kubernetes.
Para saber mais sobre como gerenciar suas chaves SSH, consulte Gerenciar a configuração do SSH.