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

Sie können sich über SSH bei jedem TKG-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 geheimen Schlüsseln für TKG-Cluster mithilfe von Kubectl.

Um eine Verbindung mit einem TKG-Clusterknoten über SSH mithilfe eines privaten Schlüssels herzustellen, erstellen Sie einen Jump-Box-vSphere Pod im Supervisor.

Voraussetzungen

In dieser Aufgabe stellen Sie einen vSphere Pod als Jump-Host für SSH-Konnektivität bereit. vSphere-Pods erfordert NSX-Netzwerk für Supervisor. Wenn Sie vDS-Netzwerke für Supervisor verwenden, finden Sie weitere Informationen unter Herstellen einer Verbindung zu TKG-Dienst-Clusterknoten mit SSH als Systembenutzer unter Verwendung eines Kennworts.

Prozedur

  1. Stellen Sie eine Verbindung zu Supervisor her.
  2. Erstellen Sie eine Umgebungsvariable namens NAMESPACE, deren Wert der Name des vSphere-Namespace ist, in dem der TKG-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 TKG-CLUSTER-NAME-ssh an.
    kubectl get secrets
  5. Erstellen eines geheimen Anmeldedatenschlüssels für die Docker Hub-Registrierung
    Standardmäßig wird das zum Erstellen des vSphere-Pods (PhotonOS) verwendete Image aus Docker Hub abgerufen. Unter Umständen benötigen Sie einen geheimen Anmeldedatenschlüssel, um das Image erfolgreich abzurufen. Weitere Informationen hierzu finden Sie unter Erstellen eines geheimen Schlüssels für die private Registrierung.
  6. 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 
      imagePullSecrets:
        - name: regcred
    
  7. Stellen Sie den Pod durch Anwenden der jumpbox.yaml-Spezifikation bereit.
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  8. Ü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.
  9. 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}')
  10. 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.
  11. 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
     
  12. 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@tkg-cluster-1-control-plane-66tbr [ ~ ]$
    
  13. 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.
  14. Wenn Sie fertig sind, geben Sie exit ein, um sich von der SSH-Sitzung auf dem vSphere Pod abzumelden.
  15. 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.