ssh en kubernetes pod

ssh en kubernetes pod

Antes de la llegada de los contenedores, los desarrolladores de software enfrentaron problemas de compatibilidad de implementación. Esto podría suceder cuando el software funciona según lo previsto durante la etapa de desarrollo, pero no funcionan mal en el entorno productioen debido a los problemas de dependencia. Sin embargo, todos los requisitos de software utilizados para el desarrollo ahora se pueden entregar y utilizar en el entorno de producción debido a contenedores. Después de construir la imagen de su contenedor y ejecutar una instancia de ella, es posible que necesite una conexión al contenedor para fines de depuración o para aplicar una hotfice, que requieren acceso al entorno del contenedor. Debe ingresar el shell de cualquier contenedor en ejecución para interactuar con él de cualquier manera. Aprenderá en este artículo cómo acceder a un contenedor Docker en ejecución o una cápsula de Kubernetes a través de SSH.

Que es ssh?

El protocolo Secure Shell (comúnmente conocido como SSH) proporciona una forma de iniciar sesión de forma remota de una computadora a otra de forma segura. Se utiliza un cifrado fuerte para salvaguardar la seguridad y la integridad de las comunicaciones y ofrece varias alternativas adicionales para una autenticación fuerte. Es un sustituto seguro de protocolos de transferencia de archivos inseguros y protocolos de inicio de sesión no garantizados (como Telnet y Rlogin) (como FTP). Además, funciona bien con Kubernetes.

Comandos y ejemplos de shell útiles para Kubectl Exec

Con Kubectl Exec, puede iniciar una sesión de shell a contenedores que operan en su clúster Kubernetes. Es una funcionalidad similar a SSH para Kubernetes. La información que necesita, junto con los escenarios en los que tiene más sentido, se proporciona a continuación para que pueda usar este comando como parte de sus procesos de gestión de clúster.

Un orquestador de contenedores llamado Kubernetes permite implementaciones automatizadas en numerosas computadoras físicas. Secure Shell en un servidor físico es diferente de iniciar una sesión de shell a un contenedor en un clúster de Kubernetes. A pesar de que los contenedores deben ser estatales y capaces de operar sin supervisión, ocasionalmente puede necesitar un shell para solucionar problemas o recuperar datos.

Puede conectarse a contenedores dentro de su clúster usando Kubectl Exec. Es un componente de la herramienta Kubectl CLI para comunicarse con las instalaciones de Kubernetes. Similar a SSH o Docker Exec, el comando exec alimenta una sesión de shell a su terminal.

La invocación más simple para acceder a la cápsula "Demo-pod" es la siguiente:

Kubectl se conectará a su clúster, lanzamiento /bin /sh en el primer contenedor de vaina de demostración y pasará las secuencias de entrada y salida desde su terminal al proceso del contenedor. Esta publicación analizará las situaciones en las que Kubectl Exec es útil, lo que cada parte del comando logra y cómo se puede personalizar la conexión de shell.

Cuándo usar Kubectl Exec?

Se necesitan diferentes técnicas para administrar cargas de trabajo contenedores en un clúster de Kubernetes que para administrar aplicaciones en un servidor convencional de metal desnudo. Debe cavar desde el host del clúster a las instancias del contenedor que implementan su sistema, agregando otra capa entre usted y su programa.

La capacidad de Kubernetes para implementar réplicas en computadoras físicas es uno de sus puntos fuertes (nodos). Incluso si pudiera administrar sobre SSH, aún necesitaría realizar un seguimiento de qué nodo supervisó cada contenedor. Sin preocuparse por el nodo Kubernetes, el contenedor está encendido. Puede especificar el contenedor para conectarse a usar kubectl exec.

El uso más frecuente de iniciar una carcasa dentro de un contenedor es cuando solucionan problemas de problemas. No se puede dejar que no hay más remedio que examinar el contenedor desde el interior después de agotar todas las demás opciones, como mirar los registros del contenedor.

Puede ver el sistema de archivos completo del contenedor y confirmar que el entorno es como lo anticipó ejecutando los comandos de shell. Además, puede ayudarlo a encontrar instancias de variables de entorno definidas incorrectamente y determinar si un archivo crucial está bloqueado o faltante.

Kubectl Exec Sustituts

El método más efectivo para conectarse a la shell de un contenedor de Kubernetes es Kubectl Exec. Está hecho para este uso y resuelve todos los problemas de elegir el nodo físico adecuado para conectarse al.

Considere ejecutar un demonio SSH dentro de su contenedor si realmente necesita una opción diferente porque necesita conectarse desde un sistema sin Kubectl. Tenga en cuenta que hacerlo plantea su vulnerabilidad a las amenazas de seguridad y contradice la premisa de que cada contenedor debe tener un solo propósito.

Cómo acceder al nodo de mi trabajador a través de SSH?

Use un conjunto de demonios de Kubernetes o tareas para acciones únicas para ejecutarse en cada nodo de trabajadores.

Revise las siguientes opciones para obtener acceso al host a los nodos de los trabajadores para fines de depuración y solución de problemas.

Usar la depuración de Kubectl para la depuración

Use el comando de nodo de depuración Kubectl para implementar una cápsula con un contexto de seguridad privilegiado a un nodo de trabajadores que desea depurar. Para proporcionar acceso al nodo del trabajador tan pronto como se forme la vaina de depuración, se implementa un shell interactivo con él.

Depuración usando kubectl exec

Puede construir una cápsula alpina con un contexto de seguridad privilegiado y emplear el comando Kubectl Exec para ejecutar comandos de depuración desde el shell interactivo de la POD si no puede ejecutar el comando Kubectl de nodo de depuración de Kubectl.

Construir una vaina con acceso a la raíz SSH para la depuración

Si no puede usar el nodo de depuración Kubectl o los comandos de Kubectl Exec, como si la conexión VPN entre el maestro de clúster y los nodos de los trabajadores está abajo. Puede crear una cápsula que permita el acceso a la raíz SSH y copie una clave SSH pública para el nodo de trabajadores para el acceso SSH.

Limpieza después de la depuración

Después de que termine de depurar, limpie los recursos para deshabilitar el acceso SSH.

¿Cuáles son las ventajas del acceso SSH??

Las ventajas se enumeran a continuación:

  • Menos claves para realizar un seguimiento
  • La superficie de ataque reducida al eliminar todas las utilidades comunes e interactivas de Linux además de SSH
  • Requisitos de parcheo reducidos como resultado de esta reducción
  • Control de configuración más efectivo (los cambios solo son posibles a través de implementaciones automatizadas)

Conclusión

Usando el comando kubectl exec, puede iniciar una sesión de shell dentro de cualquier contenedor actualmente activo en su clúster Kubernetes. Cuando los registros solos son insuficientes, puede usar este comando para explorar el sistema de archivos del contenedor, evaluar el entorno y ejecutar herramientas de depuración sofisticadas. Como última opción, debe administrar sus contenedores manualmente utilizando comandos de shell.