È possibile stabilire una connessione SSH a un nodo del cluster TKG come vmware-system-user
utilizzando una chiave privata.
È possibile connettersi tramite SSH a qualsiasi nodo del cluster TKG come utente vmware-system-user
. Il segreto che contiene la chiave privata SSH è denominato CLUSTER-NAME-ssh
. Vedere Recupero dei segreti del cluster TKG mediante Kubectl.
Per connettersi a un nodo del cluster TKG tramite SSH utilizzando una chiave privata, creare una jump box Pod vSphere in Supervisore.
Procedura
- Connettersi a Supervisore.
- Creare una variabile di ambiente denominata SPAZIO DEI NOMI il cui valore è il nome dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster TKG di destinazione.
export NAMESPACE=VSPHERE-NAMESPACE
- Passare al contesto dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster Tanzu Kubernetes.
kubectl config use-context $NAMESPACE
- Visualizzare l'oggetto segreto
TKG-CLUSTER-NAME-ssh
.
- Creare il segreto delle credenziali del registro di Docker Hub.
- 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
imagePullSecrets:
- name: regcred
- Distribuire il pod applicando la specifica
jumpbox.yaml
.
kubectl apply -f jumpbox.yaml
- Verificare che il pod sia in esecuzione.
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.
- Creare una variabile di ambiente con l'indirizzo IP del nodo del cluster di destinazione eseguendo il seguente set di comandi.
- Ottenere il nome della macchina virtuale di destinazione.
kubectl get virtualmachines
- Creare la variabile di ambiente
VMNAME
il cui valore è il nome del nodo di destinazione.
export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
- 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}')
- 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.
- 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
- 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@tkg-cluster-1-control-plane-66tbr [ ~ ]$
- 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.
- Al termine, digitare exit per disconnettersi dalla sessione SSH nel Pod vSphere.
- 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.