Puede conectarse mediante SSH a un nodo de clúster de TKG como vmware-system-user con una clave privada.

Puede conectarse mediante SSH a cualquier nodo del clúster de TKG como usuario de vmware-system-user. El secreto que contiene la clave privada SSH se denomina CLUSTER-NAME-ssh. Consulte Obtener secretos de clúster de TKG mediante Kubectl.

Para conectarse a un nodo del clúster de TKG a través de SSH mediante una clave privada, cree un pod de vSphere de Jump Box en el Supervisor.

Requisitos previos

En esta tarea se aprovisiona un pod de vSphere como host de salto para la conectividad SSH. pods de vSphere requiere redes NSX para Supervisor. Si utiliza redes de vDS para Supervisor, consulte Conectarse mediante SSH a nodos de clúster de Servicio TKG como usuario del sistema con una contraseña.

Procedimiento

  1. Conéctese a Supervisor.
  2. Cree una variable de entorno denominada NAMESPACE cuyo valor sea el nombre del espacio de nombres de vSphere donde se aprovisiona el clúster de TKG de destino.
    export NAMESPACE=VSPHERE-NAMESPACE
  3. Cambie el contexto a la instancia de espacio de nombres de vSphere en la que se aprovisiona el clúster de Tanzu Kubernetes.
    kubectl config use-context $NAMESPACE
  4. Consulte el objeto secreto TKG-CLUSTER-NAME-ssh.
    kubectl get secrets
  5. Cree un secreto de credencial para el registro de Docker Hub.
    De forma predeterminada, la imagen utilizada para crear el pod de vSphere (Photon OS) se extrae de Docker Hub. Es posible que necesite un secreto de credencial para extraer correctamente la imagen. Consulte Crear secreto de credencial de registro privado.
  6. Cree una instancia de pod de vSphere mediante las siguientes especificaciones jumpbox.yaml.
    Reemplace el valor de namespace YOUR-NAMESPACE por el espacio de nombres de vSphere en el que se aprovisiona el clúster de destino. Reemplace el valor de secretName YOUR-CLUSTER-NAME-ssh con el nombre del clúster de destino.
    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. Implemente el pod aplicando la especificación jumpbox.yaml.
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  8. Compruebe que el pod se esté ejecutando.
    kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    jumpbox   1/1     Running   0          3h9m
    
    Nota: También debe ver el pod de Jump Box en vCenter en el espacio de nombres de vSphere.
  9. Cree una variable de entorno con la dirección IP del nodo de clúster de destino ejecutando el siguiente conjunto de comandos.
    1. Obtenga el nombre de la máquina virtual de destino.
      kubectl get virtualmachines
    2. Cree la variable de entorno VMNAME cuyo valor sea el nombre del nodo de destino.
      export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
    3. Cree la variable de entorno VMIP cuyo valor sea la dirección IP de la máquina virtual del nodo de destino.
      export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
  10. Para utilizar SSH en el nodo del clúster mediante el pod de Jump Box, ejecute el siguiente comando.
    kubectl exec -it jumpbox  /usr/bin/ssh vmware-system-user@$VMIP
    Importante: La creación del contenedor e instalación del software tarda aproximadamente 60 segundos. Si recibe un "mensaje de error al ejecutar el comando en el contenedor: container_linux.go:370: starting container process caused: exec: "/usr/bin/ssh": stat /usr/bin/ssh: no such file or directory", vuelva a intentar el comando pasados unos segundos.
  11. Para confirmar la autenticidad del host, introduzca 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. Confirme que ha iniciado sesión en el nodo de destino como vmware-system-user.
    Por ejemplo, el siguiente resultado indica que ha iniciado sesión en un nodo del plano de control como usuario del sistema.
    vmware-system-user@tkg-cluster-1-control-plane-66tbr [ ~ ]$
    
  13. Realice las operaciones deseadas en el nodo.
    Atención: Es posible que deba usar sudo o sudo su para realizar ciertas operaciones en el nodo, como reiniciar el kubelet.
  14. Cuando termine, escriba exit para cerrar la sesión de SSH en pod de vSphere.
  15. Para eliminar el pod, ejecute el comando kubectl delete pod jumpbox.
    Precaución: Por motivos de seguridad, considere la posibilidad de eliminar el pod de Jumpbox después de haber realizado su trabajo. Si es necesario, puede volver a crearla más adelante.