Introducción
Reenvío de puertos de Kubectl le permite acceder e interactuar con los procesos internos del clúster de Kubernetes desde su host local. Puede usar este método para investigar problemas y ajustar sus servicios localmente sin necesidad de exponerlos de antemano.
Kubectl es la principal herramienta de línea de comandos para administrar clústeres de Kubernetes. Es esencial para implementar aplicaciones, administrar recursos de clúster y crear marcos complejos.
Este tutorial conciso le muestra cómo usar kubectl para reenviar a un pod en un clúster de Kubernetes.
Requisitos previos
- Un clúster de Kubernetes
- Un kubectl totalmente configurado herramienta de línea de comandos
¿Cómo funciona el reenvío de puertos de Kubernetes?
Aunque Kubernetes es un sistema de orquestación altamente automatizado, el proceso de reenvío de puertos requiere la participación directa y recurrente del usuario. Una conexión finaliza una vez que falla la instancia del módulo y es necesario establecer un nuevo reenvío ingresando el mismo comando manualmente.
Todo el proceso se simplifica por el hecho de que kubectl ya tiene una función de reenvío de puertos integrada.
- Un usuario interactúa con Kubernetes mediante kubectl línea de comandos en su máquina local.
- El
port-forward
El comando especifica el nombre del recurso del clúster y define el número de puerto al que se reenvía. - Como resultado, el servidor API de Kubernetes establece una única conexión HTTP entre su host local y el recurso que se ejecuta en su clúster.
- El usuario ahora puede interactuar directamente con ese pod específico, ya sea para diagnosticar un problema o depurarlo si es necesario.
El reenvío de puertos es un método que requiere mucho trabajo. Sin embargo, en algunos casos, es la única forma de acceder a los recursos internos del clúster.
Comandos básicos de kubectl port-forward
El port-forward
El comando establece un túnel desde el módulo de destino hasta su host local. El comando requiere que defina el tipo o el nombre del recurso, así como los números de puerto local y remoto:
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
Si varios pods coinciden con los criterios de tipo/nombre, se selecciona uno al azar de forma predeterminada. Para evitar este tipo de incoherencias, defina un pod con la mayor precisión posible. Puede encontrar el nombre exacto del pod enumerando manualmente los pods dentro de un espacio de nombres escribiendo:
kubectl -n yournamespace get pods
La lista proporciona los nombres de los pods dentro de ese espacio de nombres.
Puerto de kubectl a un pod específico
Por ejemplo, el siguiente comando le permitiría acceder a una implementación de MongoDB dentro de su clúster. El nombre del pod es mongo-db-r3pl1ka3 y el número de puerto es 5762:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080:5762
La API de Kubernetes ahora escucha en el puerto local 8080 y reenvía datos al puerto 5762 en el pod definido.
Puerto local aleatorio
Escuche en un puerto aleatorio localmente y reenvíe al puerto 5762 dentro del pod especificado:
kubectl port-forward pod/mongo-db-r3pl1ka3 :5762
Puerto local y remoto correspondiente
Escuche y reenvíe datos usando puertos idénticos (8080, 5762) tanto localmente como dentro del módulo específico:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080 5762
Dirección IP local aleatoria
Escuche en el puerto 8080 en cualquier dirección local, reenvíe al puerto 5762 en el pod especificado:
kubectl port-forward --address 0.0.0.0 pod/mongo-db-r3pl1ka3 8888:5762
Especifique la dirección IP local para el reenvío de puertos
Escuche en el puerto 8080 en el host local usando la IP definida, reenvíe al puerto 5762 en el pod:
kubectl port-forward --address localhost,10.153.40.102 pod/mongo-db-r3pl1ka3 8080:5762
Usar la implementación para seleccionar el pod de reenvío de puertos
Escuche y reenvíe datos usando los mismos puertos (8080 5762) tanto localmente como dentro del módulo. La implementación define qué pod se va a utilizar:
kubectl port-forward deployment/mydeployment 8080 5762
Permitir que el servicio defina el pod de reenvío de puertos
Escuche y reenvíe datos usando los mismos puertos (8080 5762) tanto localmente como dentro del módulo. El Servicio selecciona qué pod se va a utilizar:
kubectl port-forward service/myservice 8080 5762