È possibile stabilire una connessione SSH a un nodo del cluster Tanzu Kubernetes come vmware-system-user utilizzando una chiave privata.

È possibile connettersi tramite SSH a qualsiasi nodo del cluster Tanzu Kubernetes come utente vmware-system-user. Il segreto che contiene la chiave privata SSH è denominato CLUSTER-NAME-ssh. Per ulteriori informazioni, vedere Recupero dei segreti dei cluster di Tanzu Kubernetes.

Per connettersi a un nodo del cluster Tanzu Kubernetes tramite SSH utilizzando una chiave privata, creare una jump box Pod vSphere nel Cluster supervisore.

Prerequisiti

In questa attività viene eseguito il provisioning di un Pod vSphere come jump host per la connettività SSH. Pod vSphere richiede i servizi di rete NSX-T per il Cluster supervisore. Se si utilizzano i servizi di rete vDS per il Cluster supervisore, utilizzare invece l'approccio seguente: Stabilire una connessione SSH ai nodi del cluster Tanzu Kubernetes come utente di sistema utilizzando una password.

Procedura

  1. Connettersi a Cluster supervisore.
  2. Creare una variabile di ambiente denominata NAMESPACE il cui valore è il nome dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster Tanzu Kubernetes di destinazione.
    export NAMESPACE=VSPHERE-NAMESPACE
  3. Passare al contesto dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster Tanzu Kubernetes.
    kubectl config use-context $NAMESPACE
  4. Visualizzare l'oggetto segreto TKGS-CLUSTER-NAME-ssh.
    kubectl get secrets
  5. Creare un Pod vSphere utilizzando il seguente codice jumpbox.yaml.
    Sostituire il valore namespace YOUR-NAMESPACE con lo Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster di destinazione. Sostituire il valore del secretName YOUR-CLUSTER-NAME-ssh con il nome del cluster di destinazione.
    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. Distribuire il pod applicando la specifica jumpbox.yaml.
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  7. Verificare che il pod sia in esecuzione.
    kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    jumpbox   1/1     Running   0          3h9m
    
    Nota: Il pod della jumpbox di vCenter dovrebbe essere presente anche nello Spazio dei nomi vSphere.
  8. Creare una variabile di ambiente con l'indirizzo IP del nodo del cluster di destinazione eseguendo il seguente set di comandi.
    1. Ottenere il nome della macchina virtuale di destinazione.
      kubectl get virtualmachines
    2. Creare la variabile di ambiente VMNAME il cui valore è il nome del nodo di destinazione.
      export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
    3. Creare la variabile di ambiente VMIP il cui valore è l'indirizzo IP della macchina virtuale del nodo di destinazione.
      export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
  9. Stabilire una connessione SSH al nodo del cluster utilizzando il pod della jumpbox eseguendo il comando seguente.
    kubectl exec -it jumpbox  /usr/bin/ssh vmware-system-user@$VMIP
    Importante: Il processo di creazione del contenitore e di installazione del software richiede circa 60 secondi. Se viene visualizzato il messaggio di errore "error executing command in container: container_linux.go:370: starting container process caused: exec: "/usr/bin/ssh": stat /usr/bin/ssh: no such file or directory" attendere qualche secondo ed eseguire nuovamente il comando.
  10. Confermare l'autenticità dell'host immettendo 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. Verificare di avere effettuato l'accesso nel nodo di destinazione come vmware-system-user.
    Ad esempio, l'output seguente indica che è stato effettuato l'accesso a un nodo del piano di controllo come utente di sistema.
    vmware-system-user@tkgs-cluster-1-control-plane-66tbr [ ~ ]$
    
  12. Eseguire le operazioni desiderate nel nodo.
    Avvertimento: Potrebbe essere necessario utilizzare sudo o sudo su per eseguire determinate operazioni nel nodo, ad esempio il riavvio del kubelet.
  13. Al termine, digitare exit per disconnettersi dalla sessione SSH nel Pod vSphere.
  14. Per eliminare il pod, eseguire il comando kubectl delete pod jumpbox.
    Attenzione: Per motivi di sicurezza, è consigliabile eliminare il pod della jumpbox dopo aver completato il lavoro. Sarà possibile ricrearlo in un secondo momento, se necessario.