Você pode SSH para um nó de cluster TKG como o vmware-system-user usando uma chave privada.

Você pode se conectar por meio do SSH a qualquer nó de cluster TKG como o usuário vmware-system-user. O segredo que contém a chave privada SSH é denominado CLUSTER-NAME-ssh. Consulte Obter segredos de cluster do TKG 2 usando o Kubectl.

Para se conectar a um nó de cluster do TKG por meio de SSH usando uma chave privada, crie uma jumpbox vSphere Pod em Supervisor.

Pré-requisitos

Nesta tarefa, você provisiona um vSphere Pod como um host de salto para conectividade SSH. vSphere Pods requer rede NSX para Supervisor. Se você estiver usando a rede vDS para Supervisor, consulte SSH para nós de cluster do TKG como o usuário do sistema usando uma senha.

Procedimento

  1. Conecte-se a Supervisor.
  2. Crie uma variável de ambiente chamada NAMESPACE, cujo valor seja o nome do vSphere Namespace em que o cluster TKG de destino é provisionado.
    export NAMESPACE=VSPHERE-NAMESPACE
  3. Alterne o contexto para o vSphere Namespace em que o cluster Tanzu Kubernetes é provisionado.
    kubectl config use-context $NAMESPACE
  4. Visualize o objeto secreto TKG-CLUSTER-NAME-ssh.
    kubectl get secrets
  5. Crie um vSphere Pod usando o seguinte jumpbox.yaml.
    Substitua o valor namespace YOUR-NAMESPACE pelo vSphere Namespace em que o cluster de destino é provisionado. Substitua o valor secretName YOUR-CLUSTER-NAME-ssh pelo nome do cluster de destino.
    apiVersion: v1
    kind: Pod
    metadata:
      name: jumpbox
      namespace: YOUR-NAMESPACE     #REPLACE
    spec:
      containers:
      - image: "photon:3.0"
        name: jumpbox
        command: [ "/bin/bash", "-c", "--" ]
        args: [ "yum install -y openssh-server; mkdir /root/.ssh; cp /root/ssh/ssh-privatekey /root/.ssh/id_rsa; chmod 600 /root/.ssh/id_rsa; while true; do sleep 30; done;" ]
        volumeMounts:
          - mountPath: "/root/ssh"
            name: ssh-key
            readOnly: true
        resources:
          requests:
            memory: 2Gi
      volumes:
        - name: ssh-key
          secret:
            secretName: YOUR-CLUSTER-NAME-ssh     #REPLACE 
    
  6. Implante o pod aplicando a especificação jumpbox.yaml.
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  7. Verifique se o pod está em execução.
    kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    jumpbox   1/1     Running   0          3h9m
    
    Observação: Você também deve ver o pod de jumpbox em vCenter no vSphere Namespace.
  8. Crie uma variável de ambiente com o endereço IP do nó do cluster de destino executando o seguinte conjunto de comandos.
    1. Obtenha o nome da máquina virtual de destino.
      kubectl get virtualmachines
    2. Crie a variável de ambiente VMNAME cujo valor é o nome do nó de destino.
      export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
    3. Crie a variável de ambiente VMIP cujo valor é o endereço IP da VM do nó de destino.
      export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
  9. SSH para o nó de cluster usando o pod de jumpbox executando o seguinte comando.
    kubectl exec -it jumpbox  /usr/bin/ssh vmware-system-user@$VMIP
    Importante: A criação do contêiner e a instalação do software levam aproximadamente 60 segundos. Se você receber um "erro ao executar o comando no contêiner: container_linux.go:370: startup container process cause: exec: "/usr/bin/ssh": stat /usr/bin/ssh: no such file or directory", tente o comando novamente em alguns segundos.
  10. Confirme a autenticidade do host digitando yes.
    The authenticity of host '10.249.0.999 (10.249.0.999)' can't be established.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.249.0.999' (ECDSA) to the list of known hosts.
    Welcome to Photon 3.0
     
  11. Confirme se você está conectado ao nó de destino como o vmware-system-user.
    Por exemplo, a saída a seguir indica que você está conectado a um nó do plano de controle como o usuário do sistema.
    vmware-system-user@tkg-cluster-1-control-plane-66tbr [ ~ ]$
    
  12. Execute as operações desejadas no nó.
    Atenção: Pode ser necessário usar sudo ou sudo su para executar determinadas operações no nó, como reiniciar o kubelet.
  13. Quando terminar, digite exit para fazer logout da sessão SSH no vSphere Pod.
  14. Para excluir o pod, execute o comando kubectl delete pod jumpbox.
    Cuidado: Por questões de segurança, considere a exclusão do pod de jumpbox depois de concluir seu trabalho. Se necessário, você poderá recriá-lo posteriormente.