Puntos clave: Kubernetes utiliza configuraciones Port, TargetPort y NodePort para gestionar aplicaciones contenedorizadas. Port expone servicios dentro del clúster, TargetPort dirige las solicitudes a puertos pod específicos y NodePort proporciona acceso externo a través de la dirección IP del nodo.
- Kubernetes automatiza la gestión, escalado y monitorización de contenedores.
- Comprender las configuraciones de los puertos es crucial para un despliegue y gestión eficaz de aplicaciones.
Kubernetes y puertos
Kubernetes están una herramienta de código abierto que orquesta aplicaciones contenedorizadas. La herramienta Kubernetes se asegura de que los contenedores son funcionando correctamente al monitorizar pods entre diferentes servidores o nodos. Gestiona automáticamente las respuestas a fallos de contenedores, reiniciando o reemplazando pods cuando es necesario. Los escala hacia arriba o abajo según la demanda y distribuye la carga de cómputo entre contenedores para equilibrar el trabajo. Elimina el trabajo manual de gestionar, escalar y mantener aplicaciones grandes y complejas. Kubernetes utiliza redes, incluidos puertos y servicios, para facilitar la comunicación entre pods y otros recursos.
Configuraciones de puertos Kubernetes Services: Puerto vs TargetPort vs NodePort
En Kubernetes son varias configuraciones de puertos diferentes para los servicios Kubernetes:
- El puerto expone el servicio Kubernetes en el puerto especificado dentro del clúster. Otros pods dentro del clúster pueden comunicarse con este servidor en el puerto especificado.
- TargetPort están el puerto al que el servicio enviará las peticiones, y en el que tu pod estará escuchando. Tu aplicación en el contenedor también tendrá que estar escuchando en este puerto.
- NodePort expone un servicio externamente al clúster mediante la dirección IP de los nodos objetivo y el NodePort. NodePort está la configuración predeterminada si el campo de puerto no está especificado.
Veamos cómo utilizar estos puertos en tu manifiesto de Kubernetes.
Uso de puerto, puerto objetivo y nodeport en Kubernetes
apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
type: NodePort
selector:
app: hello-world
ports:
- protocol: TCP
port: 8080
targetPort: 80
nodePort: 30036
A partir de los ejemplos anteriores, el servicio hello-world estará expuesto internamente a aplicaciones del clúster en el puerto 8080 y externamente al clúster en la dirección IP del nodo en 30036. También reenviará las solicitudes a pods con la etiqueta "app: hello-world" en el puerto 80. La configuración de los ajustes anteriores puede verificarse con el comando:
$ kubectl describe service hello-world
Crea un pod ejecutando nginx al que el servicio reenvíe las solicitudes a:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: hello-world
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
Para probar y demostrar la configuración anterior, podemos Crea un pod ejecutando un contenedor de Ubuntu para ejecutar algunos comandos de curl y verificar la conectividad.
$ kubectl run -i --tty ubuntu --image=ubuntu --restart=Never -- sh
Desde este pod ejecutan los siguientes comandos: Curl el servicio en el 'puerto' definido en el manifiesto Kubernetes para el servicio.
$ curl hello-world:8080
Esto demuestra que al curar el servicio Kubernetes en el puerto 80 redirige la solicitud a nuestro pod nginx que escucha en el puerto 80. Para probar el NodePort en tu máquina (no en el pod de Ubuntu) te necesitarás encontrar la dirección IP del nodo en el que están ejecutando tu pod.
$ kubectl describe pod nginx
Ahora, te puede curlar la dirección IP del nodo y el nodePort y debería llegar al contenedor nginx que corre detrás del servicio Kubernetes.
Conclusión
Dominar Kubernetes, especialmente el uso de pods y puertos, está esencial para gestionar eficientemente aplicaciones contenedoras a gran escala. A medida que Kubernetes sigue evolucionando y su adopción crece en diversos sectores, entender cómo configura y optimiza la red dentro de la plataforma permitirá a te desplegar, gestionar y escalar aplicaciones con mayor precisión y fiabilidad.
Guía Kubernetes
- ¿Qué es Kubernetes (K8s)? Un tutorial básico de Kubernetes
- Mejores prácticas de Kubernetes para mejorar la eficiencia del clúster
- Mejores Prácticas: Cómo Diseñar Aplicaciones para Kubernetes
- Kubernetes Pods: Una introducción
- Kubernetes ReplicaSets: Una breve introducción
- Despliegues de Kubernetes completamente explicados
- Cómo utilizar y gestionar los DaemonSets de Kubernetes
- Cómo funcionan los servicios de Kubernetes
- Uso de Kubernetes Port, TargetPort y NodePort
- Creación y uso de ConfigMaps en Kubernetes
- Introducción a Kubernetes Secrets
- Fundamentos de las redes de Kubernetes
- Explicación de Kubernetes Ingress
- Introducción a las Listas de Helm de Kubernetes
- ¿Qué están el patrón de operador Kubernetes?
- Despliegue de PostgreSQL como un StatefulSet en Kubernetes
- Definición de Recursos Personalizados (CRDs) de Kubernetes Explicada
- 3 Patrones Kubernetes para aplicaciones nativas en la nube
- Explicación de los recursos de cómputo de Kubernetes
- Kubernetes Security for DevOps Pipelines
- Uso de spinnaker con Kubernetes para entrega continua
- Multi-Clústeres Kubernetes: Cómo y por qué utilizarlos
- Monitorización de Kubernetes: Una guía completa
- Kubernetes vs Docker: Una comparación rápida
- Kubernetes vs Docker Swarm: Comparando herramientas de orquestación de contenedores
- Kubernetes vs OpenShift: ¿Cuál es la diferencia?
- Certificaciones Kubernetes: Cómo y por qué Obtén la certificación
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.