Als vmware-system-user können Sie eine Verbindung zu einem Tanzu Kubernetes-Clusterknoten über SSH unter Verwendung eines Privatschlüssels herstellen.

Sie können sich über SSH bei jedem Tanzu Kubernetes-Clusterknoten als vmware-system-user-Benutzer anmelden. Der geheime Schlüssel, der den privaten SSH-Schlüssel enthält, wird CLUSTER-NAME-ssh genannt. Weitere Informationen finden Sie unter Abrufen von Geheimschlüsseln des Tanzu Kubernetes-Clusters.

Zum Herstellen einer Verbindung mit einem Tanzu Kubernetes-Clusterknoten über SSH mithilfe eines privaten Schlüssels erstellen Sie einen Jump-Box-vSphere Pod auf dem Supervisor-Cluster.

Voraussetzungen

In dieser Aufgabe stellen Sie einen vSphere Pod als Jump-Host für SSH-Konnektivität bereit. vSphere-Pods benötigen ein NSX-T-Netzwerk für den Supervisor-Cluster. Wenn Sie ein vDS-Netzwerk für den Supervisor-Cluster verwenden, nutzen Sie stattdessen folgenden Ansatz: Herstellen einer Verbindung zu Tanzu Kubernetes-Clusterknoten mit SSH als Systembenutzer unter Verwendung eines Kennworts.

Prozedur

  1. Stellen Sie eine Verbindung mit dem Supervisor-Cluster her.
  2. Erstellen Sie eine Umgebungsvariable namens NAMESPACE, deren Wert der Name des vSphere-Namespace ist, in dem der Tanzu Kubernetes-Zielcluster bereitgestellt wird.
    export NAMESPACE=VSPHERE-NAMESPACE
  3. Wechseln Sie den Kontext zum vSphere-Namespace, in dem der Tanzu Kubernetes-Cluster bereitgestellt wird.
    kubectl config use-context $NAMESPACE
  4. Zeigen Sie das geheime Objekt TKGS-CLUSTER-NAME-ssh an.
    kubectl get secrets
  5. Erstellen Sie einen vSphere Pod mithilfe der folgenden jumpbox.yaml.
    Ersetzen Sie den namespace-Wert YOUR-NAMESPACE durch den vSphere-Namespace, in dem der Zielcluster bereitgestellt wird. Ersetzen Sie den secretName-Wert YOUR-CLUSTER-NAME-ssh durch den Namen des Zielclusters.
    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. Stellen Sie den Pod durch Anwenden der jumpbox.yaml-Spezifikation bereit.
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  7. Überprüfen Sie, ob der Pod ausgeführt wird.
    kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    jumpbox   1/1     Running   0          3h9m
    
    Hinweis: Sie sollten auch den Jumpbox-Pod in vCenter im vSphere-Namespace sehen.
  8. Erstellen Sie eine Umgebungsvariable mit der IP-Adresse des Zielclusterknotens, indem Sie den folgenden Befehlssatz ausführen.
    1. Rufen Sie den Namen der virtuellen Zielmaschine ab.
      kubectl get virtualmachines
    2. Erstellen Sie die Umgebungsvariable VMNAME, deren Wert der Name des Zielknotens ist.
      export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
    3. Erstellen Sie die Umgebungsvariable VMIP, deren Wert die IP-Adresse der Zielknoten-VM ist.
      export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
  9. Greifen Sie mithilfe des Jump Box-Pods per SSH auf den Clusterknoten zu, indem Sie den folgenden Befehl ausführen.
    kubectl exec -it jumpbox  /usr/bin/ssh vmware-system-user@$VMIP
    Wichtig: Es dauert ca. 60 Sekunden, um den Container zu erstellen und die Software zu installieren. Wenn Sie die Meldung „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“ erhalten, führen Sie den Befehl in ein paar Sekunden erneut aus.
  10. Bestätigen Sie die Echtheit des Hosts, indem Sie Ja eingeben.
    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. Bestätigen Sie, dass Sie beim Zielknoten als vmware-system-user angemeldet sind.
    Beispielsweise gibt die folgende Ausgabe an, dass Sie als Systembenutzer bei einem Knoten für die Steuerungsebene angemeldet sind.
    vmware-system-user@tkgs-cluster-1-control-plane-66tbr [ ~ ]$
    
  12. Führen Sie die gewünschten Vorgänge auf dem Knoten aus.
    Achtung: Nach der Authentifizierung müssen Sie möglicherweise sudo oder sudo su verwenden, um bestimmte Vorgänge auf dem Knoten durchzuführen, wie z. B. den Neustart von kubelet.
  13. Wenn Sie fertig sind, geben Sie exit ein, um sich von der SSH-Sitzung auf dem vSphere Pod abzumelden.
  14. Um den Pod zu löschen, führen Sie den Befehl kubectl delete pod jumpbox aus.
    Vorsicht: Aus Sicherheitsgründen sollten Sie nach Abschluss des Vorgangs den Jumpbox-Pod löschen. Bei Bedarf können Sie ihn zu einem späteren Zeitpunkt neu erstellen.