Como usar o SSH para se conectar a um nó de cluster

Nesta página, descrevemos como colocar um shell seguro (SSH) em um nó de cluster do GKE On-Prem.

Visão geral

Para fazer o SSH em um nó de cluster de usuário ou administrador, fazer o download de uma chave SSH do plano de controle do cluster. Depois, você usará a chave para colocar um shell em um nó do cluster.

Depois de fazer o download da chave SSH, salve-a em um sistema de gerenciamento de chaves secrets/credenciais (como o HashiCorp Vault). Se você quiser usar SSH em um nó de cluster no futuro e o servidor da API estiver inativo, precisará da chave SSH salva.

Como conseguir os endereços IP dos nós do cluster

Cluster de usuários

Consiga os endereços IP dos seus nós de cluster de usuário:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes --output wide

em que [USER_CLUSTER_KUBECONFIG] é o caminho do arquivo kubeconfig do cluster de usuários.

Cluster de administrador

Consiga os endereços IP dos nós do cluster de administrador:

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get nodes --output wide

em que [ADMIN_CLUSTER_KUBECONFIG] é o caminho do arquivo kubeconfig do cluster de administrador.

Na saída do comando, observe o campo INTERNAL-IP. Esses são os endereços IP do nó.

Como usar SSH para se conectar a um nó de cluster de usuário

  1. Consiga a chave SSH para um cluster de usuário:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get secrets -n [USER_CLUSTER_NAME] ssh-keys -o yaml \
    | grep ssh.key: | awk '{ print $NF }' | base64 -d > \
    ~/.ssh/[USER_CLUSTER_NAME].key && chmod 600 ~/.ssh/[USER_CLUSTER_NAME].key
    

    onde:

    • [ADMIN_CLUSTER_KUBECONFIG] é o caminho do arquivo kubeconfig do cluster de administrador;

    • [USER_CLUSTER_NAME] é o nome do cluster de usuário.

    O comando anterior executa as seguintes etapas:

    • No cluster de administrador, consiga o campo ssh.key de um secret chamado ssh-keys no namespace [USER_CLUSTER_NAME].

    • Decodifique em Base64 a chave.

    • Armazene a chave decodificada no arquivo ~/.ssh/[USER_CLUSTER_NAME].key.

    • Defina as permissões de acesso apropriadas para o arquivo de chave.

  2. Use a chave para executar o SSH em um nó de cluster do usuário:

    ssh -i ~/.ssh/[USER_CLUSTER_NAME].key ubuntu@[NODE_IP]
    

    em que [NODE_IP] é o endereço IP interno de um nó no cluster de usuário, que você coletou anteriormente.

Como usar o SSH para se conectar a um nó de cluster de administrador

  1. Consiga a chave SSH para o cluster de administrador:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get secrets -n kube-system sshkeys -o yaml \
    | grep vsphere_tmp: | awk '{ print $NF }' | base64 -d > \
    ~/.ssh/admin-cluster.key && chmod 600 ~/.ssh/admin-cluster.key
    

    em que [ADMIN_CLUSTER_KUBECONFIG] é o caminho do arquivo kubeconfig do cluster de administrador.

    O comando anterior executa as seguintes etapas:

    • No cluster de administração, consiga o campo vsphere_tmp de um secret chamado sshkeys no namespace kube-system.

    • Decodifique em Base64 o campo vsphere_tmp, que é a chave.

    • Armazene a chave decodificada no arquivo ~/.ssh/admin-cluster.key.

    • Defina as permissões de acesso apropriadas para o arquivo de chave.

  2. Use a chave para executar o SSH em um nó de cluster de administrador:

    ssh -i ~/.ssh/admin-cluster.key ubuntu@[NODE_IP]
    

    em que [NODE_IP] é o endereço IP interno de um nó no cluster de administrador, que você coletou anteriormente.