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.
Prozedur
- Stellen Sie eine Verbindung zu Supervisor her.
- 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
- Wechseln Sie den Kontext zum vSphere-Namespace, in dem der Tanzu Kubernetes-Cluster bereitgestellt wird.
kubectl config use-context $NAMESPACE
- Zeigen Sie das geheime Objekt
TKG-CLUSTER-NAME-ssh
an.
- Erstellen eines geheimen Anmeldedatenschlüssels für die Docker Hub-Registrierung
- 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
- Stellen Sie den Pod durch Anwenden der
jumpbox.yaml
-Spezifikation bereit.
kubectl apply -f jumpbox.yaml
- Überprüfen Sie, ob der Pod ausgeführt wird.
NAME READY STATUS RESTARTS AGE
jumpbox 1/1 Running 0 3h9m
Hinweis: Sie sollten auch den Jumpbox-Pod in vCenter im
vSphere-Namespace sehen.
- Erstellen Sie eine Umgebungsvariable mit der IP-Adresse des Zielclusterknotens, indem Sie den folgenden Befehlssatz ausführen.
- Rufen Sie den Namen der virtuellen Zielmaschine ab.
kubectl get virtualmachines
- Erstellen Sie die Umgebungsvariable
VMNAME
, deren Wert der Name des Zielknotens ist.
export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
- 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}')
- 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.
- 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
- 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 [ ~ ]$
- 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.
- Wenn Sie fertig sind, geben Sie exit ein, um sich von der SSH-Sitzung auf dem vSphere Pod abzumelden.
- 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.