Vous pouvez utiliser SSH pour vous connecter à un nœud de cluster TKG en tant que vmware-system-user à l'aide d'une clé privée.

Vous pouvez vous connecter par SSH à n'importe quel nœud de cluster TKG en tant qu'utilisateur vmware-system-user. Le secret qui contient la clé privée SSH est nommé CLUSTER-NAME-ssh. Reportez-vous à la section Obtenir les secrets du cluster TKG à l'aide de Kubectl.

Pour vous connecter à un nœud de cluster TKG via le protocole SSH en utilisant une clé privée, créez un système JumpBox d'Espace vSphere sur le Superviseur.

Conditions préalables

Dans cette tâche, vous provisionnez un Espace vSphere en tant qu'hôte de système JumpBox pour la connectivité SSH. Espaces vSphere nécessite la mise en réseau NSX pour le Superviseur. Si vous utilisez la mise en réseau vDS pour le Superviseur, consultez Utiliser SSH pour se connecter aux nœuds du cluster Service TKG en tant qu'utilisateur système à l'aide d'un mot de passe.

Procédure

  1. Connectez-vous au Superviseur.
  2. Créez une variable d'environnement nommée NAMESPACE dont la valeur est le nom de l'Espace de noms vSphere dans lequel le cluster TKG cible est provisionné.
    export NAMESPACE=VSPHERE-NAMESPACE
  3. Changez de contexte pour utiliser l'Espace de noms vSphere où le cluster Tanzu Kubernetes est provisionné.
    kubectl config use-context $NAMESPACE
  4. Affichez l'objet secret TKG-CLUSTER-NAME-ssh.
    kubectl get secrets
  5. Créez un secret des informations d'identification de registre Docker Hub.
    Par défaut, l'image utilisée pour créer l'espace vSphere (PhotonOS) est extraite de Docker Hub. Vous pouvez avoir besoin d'un secret des informations d'identification pour extraire correctement l'image. Reportez-vous à la section Créer un secret d'identification de registre privé.
  6. Créez un Espace vSphere à l'aide de la commande jumpbox.yaml suivante.
    Remplacez la valeur namespace YOUR-NAMESPACE par l' Espace de noms vSphere dans lequel le cluster cible est provisionné. Remplacez la valeur secretName YOUR-CLUSTER-NAME-ssh par le nom du cluster cible.
    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. Déployez l'espace en appliquant la spécification jumpbox.yaml.
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  8. Vérifiez que l'espace est en cours d'exécution.
    kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    jumpbox   1/1     Running   0          3h9m
    
    Note : Vous devez également voir l'espace jumpbox de vCenter dans l' Espace de noms vSphere.
  9. Créez une variable d'environnement avec l'adresse IP du nœud de cluster cible en exécutant l'ensemble de commandes suivant.
    1. Obtenez le nom de la machine virtuelle cible.
      kubectl get virtualmachines
    2. Créez la variable d'environnement VMNAME dont la valeur est le nom du nœud cible.
      export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
    3. Créez la variable d'environnement VMIP dont la valeur est l'adresse IP de la machine virtuelle du nœud cible.
      export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
  10. Connectez-vous par SSH au nœud de cluster à l'aide de l'espace de système JumpBox en exécutant la commande suivante.
    kubectl exec -it jumpbox  /usr/bin/ssh vmware-system-user@$VMIP
    Important : La création du conteneur et l'installation du logiciel prennent environ 60 secondes. Si vous recevez le message « 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, », attendez quelques secondes et réessayez la commande.
  11. Confirmez l'authenticité de l'hôte en saisissant 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
     
  12. Confirmez que vous êtes connecté au nœud cible en tant que vmware-system-user.
    Par exemple, la sortie suivante indique que vous êtes connecté à un nœud de plan de contrôle en tant qu'utilisateur système.
    vmware-system-user@tkg-cluster-1-control-plane-66tbr [ ~ ]$
    
  13. Effectuez les opérations souhaitées sur le nœud.
    Attention : Vous devrez éventuellement utiliser sudo ou sudo su pour effectuer certaines opérations sur le nœud, telles que le redémarrage de kubelet.
  14. Lorsque vous avez terminé, tapez exit pour vous déconnecter de la session SSH sur l'Espace vSphere.
  15. Pour supprimer l'espace, exécutez la commande kubectl delete pod jumpbox.
    Attention : Pour des raisons de sécurité, envisagez de supprimer l'espace JumpBox à la fin de votre travail. Si nécessaire, vous pouvez le recréer ultérieurement.