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

Você pode se conectar por meio de SSH a qualquer nó do cluster Tanzu Kubernetes como o usuário vmware-system-user. O segredo que contém a chave privada SSH é denominado CLUSTER-NAME-ssh. Para obter mais informações, consulte Obter segredos de cluster de Tanzu Kubernetes.

Para se conectar a um nó de cluster Tanzu Kubernetes sobre SSH usando uma chave privada, crie uma jumpbox vSphere Pod no Supervisor Cluster.

Pré-requisitos

Nesta tarefa, você provisiona um vSphere Pod como um host de salto para conectividade SSH. vSphere Pods exigem rede de NSX-T para o Supervisor Cluster. Se você estiver usando a rede vDS para o Supervisor Cluster, use a seguinte abordagem: SSH para Tanzu Kubernetes nós de cluster como o usuário do sistema usando uma senha.

Procedimento

  1. Conecte-se ao Supervisor Cluster.
  2. Crie uma variável de ambiente chamada NAMESPACE cujo valor é o nome do vSphere Namespace onde o cluster de destino Tanzu Kubernetes está provisionado.
    export NAMESPACE=VSPHERE-NAMESPACE
  3. Alterne o contexto para o vSphere Namespace onde o cluster Tanzu Kubernetes está provisionado.
    kubectl config use-context $NAMESPACE
  4. Visualize o objeto secreto TKGS-CLUSTER-NAME -ssh.
    kubectl get secrets
  5. Crie um vSphere Pod usando o seguinte jumpbox.yaml.
    Substitua o valor de namespace YOUR-NAMESPACE pelo vSphere Namespace no qual o cluster de destino está 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 jumpbox no 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ó do cluster usando o pod jumpbox executando o seguinte comando.
    kubectl exec -it jumpbox  /usr/bin/ssh vmware-system-user@$VMIP
    Importante: Leva aproximadamente 60 segundos para criar o contêiner e instalar o software. Se você receber um "erro de execução do comando no contêiner: container_linux.go: 370: iniciando o processo do contêiner causado: 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 sim .
    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 vmware-system-user.
    Por exemplo, a saída a seguir indica que você está conectado a um nó de plano de controle como o usuário do sistema.
    vmware-system-user@tkgs-cluster-1-control-plane-66tbr [ ~ ]$
    
  12. Realize 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 motivos de segurança, considere excluir o pod jumpbox depois de concluir seu trabalho. Se necessário, você pode recriá-lo mais tarde.