Para los servicios de Kubernetes, hay varias configuraciones de puerto distintas disponibles, incluidos Port, TargetPort y Nodeport. Se puede acceder al servicio Kubernetes a través del puerto elegido del clúster, y otros pods pueden comunicarse con este servidor utilizando el puerto configurado. En el TargetPort, el servicio enviará solicitudes, y las cápsulas las escucharán. Este puerto también deberá estar abierto para la aplicación de su contenedor. Si no se suministra el campo de puerto, nodeport se usa de forma predeterminada. Revisaremos cómo exponer puertos en Kubernetes en este artículo. Debe comprender la cápsula y el despliegue para seguir los ejercicios prácticos sobre este tema.
Asegúrese de tener Kubectl instalado. También necesitará un clúster Kubernetes, así como la herramienta de línea de comandos Kubectl configurada para conectarse con él. Para comenzar, abra el clúster de Minikube, que está instalado en su Ubuntu 20.04 LTS OS. Para ejecutar minikube, ejecute el comando de inicio de minikube en la línea de comando.
Crear un archivo con el comando touch.
La vaina.Se crea el archivo YAML, como se muestra en la captura de pantalla que lo acompaña.
Ahora haga un pod Nginx con la siguiente especificación del puerto del contenedor:
Como resultado, se puede acceder desde cualquier nodo en su clúster. Examine los nodos en los que está funcionando el POD y use los comandos a continuación para hacerlo.
Para ver el estado completo de las vainas de Kubernetes, puede ejecutar el comando get pod como se menciona a continuación.
Con el comando que se muestra en la captura de pantalla, puede verificar las direcciones IP de sus vainas.
Puede ssh en cualquier nodo que esté presente en su clúster y curl ambas direcciones IP. Vale la pena señalar que los contenedores no usan el puerto 80 en el nodo, y no existen reglas específicas de NAT para dirigir el tráfico a la POD. Esto significa que puede ejecutar muchas vainas nginx en el mismo nodo, cada una con su puerto de contenedor, y acceder a ellos a través de IP desde cualquier otra vaina o nodo en el clúster. Los puertos aún pueden estar expuestos a las interfaces del nodo host, al igual que Docker, aunque este requisito se reduce enormemente debido al modelo de redes.
Cómo crear un servicio?
Entonces, en un espacio plano de direcciones en todo el clúster, tenemos vainas que ejecutan Nginx. Teóricamente podría comunicarse directamente con estas cápsulas, pero lo que sucede si uno de ellos muere? Las cápsulas perecerán como resultado, y la implementación generará otras nuevas con direcciones IP alternativas. El problema que resuelve un servicio es este.
Un servicio de Kubernetes es un conjunto lógico de vainas que todos hacen la misma tarea y se ejecutan en algún lugar de su clúster. Cuando se crea un servicio, se le da una dirección IP específica, y esta dirección se soluciona durante la existencia del servicio y no cambiará. Se pueden configurar las vainas para comunicarse con el servicio, con la certeza de que la comunicación estará equilibrada a un miembro de la cápsula del miembro del servicio. Con Kubectl Expose, puede crear un servicio para sus dos réplicas Nginx:
Un conjunto de vainas admite un servicio. Los puntos finales proporcionan acceso a estos pods. La selección del servicio se evaluará regularmente, con los resultados publicados en un objeto de puntos finales llamado My-Nginx. Si una vaina muere, se separa de los puntos finales. Después de eso, se reemplaza con nuevas vainas con el mismo selector.
Cómo acceder al servicio?
Las variables de entorno y el DNS son los dos métodos básicos para encontrar un servicio en Kubernetes. El primero requiere el complemento del clúster de Coredns, mientras que el segundo no.
Variables de entorno
El kubelet crea una colección de variables de entorno para cada servicio actual cuando un pod comienza en un nodo. Como resultado, puede haber dificultad en el proceso de pedido. Examine el entorno de sus vainas Nginx (el nombre de su cápsula diferirá) para comprender por qué:
$ kubectl ejecut my-nginx-3800858182-jr4a2-printenv | servicio GREP
Vale la pena señalar que no se menciona su servicio. Porque hiciste las réplicas antes del servicio, este es el caso. Este paso podría derribar todo su servicio si no funcionara. Al destruir las dos vainas y esperar que el despliegue las recree, podemos completar la tarea correctamente. El servicio está presente antes de las réplicas esta vez. Esto le proporcionará una extensión de servicio a nivel de programador para sus vainas, así como las variables de entorno apropiadas:
DNS
Kubernetes tiene un servicio de complemento de clúster DNS que asigna nombres DNS a otros servicios automáticamente. Puede ver si se está ejecutando en su clúster ejecutando el siguiente comando:
$ kubectl get servicios kube-dns-namespace = kube-system
Conclusión
En este artículo, ha aprendido que para los servicios de Kubernetes, hay varias configuraciones de puerto distintas disponibles, incluidos Port, TargetPort y Nodeport. Además, hemos incluido una descripción completa de cómo puede exponer con éxito los puertos en Kubernetes.