Los servicios son la capa de abstracción de hacer que una aplicación sea accesible como un servicio de red en el conjunto de pods. Ofrece un solo nombre de DNS y una dirección IP por la cual se puede acceder a las vainas. Se agrega frente a cada vaina para proporcionar una dirección IP estática. Este artículo describe la necesidad de una capa de servicio y los tipos de servicios en Kubernetes. Consulte este artículo de principio a fin si es nuevo en este concepto y no sabe cómo crear un servicio de Kubernetes.
¿Qué son los servicios de Kubernetes??
Un servicio en Kubernetes es una abstracción que define una colección de vainas lógicas donde se encuentra un componente o aplicación activa y contiene una política de acceso. Debido a la naturaleza fugaz de las cápsulas individuales, Kubernetes solo garantiza la disponibilidad de las vainas y réplicas especificadas, no su vivacidad. Esto sugiere que otras cápsulas que necesitan interactuar con esta aplicación o componente no dependían de las direcciones IP de sus vainas subyacentes.
También se asigna un servicio con una dirección IP simulada (en Kubernetes, por lo tanto, se conoce como un clúster) y sobrevive hasta que se mata expresamente. Las consultas al servicio se reenvían a las cápsulas apropiadas, por lo que es una interfaz confiable para la aplicación o la comunicación del módulo. Las solicitudes de aplicaciones nativas de Kubernetes también se pueden hacer a través de una API en el Apiservador para Kubernetes que expone y mantiene constantemente los puntos finales de POD reales.
¿Cuándo necesitamos los servicios de Kubernetes??
Estas son las razones por las que necesitamos servicios de Kubernetes:
Dirección IP estable
Tener una dirección IP estática que permanezca incluso si la cápsula muere. Frente a cada cápsula, llamamos a los servicios que proporcionan acceso persistente y estable de la dirección IP a esa cápsula.
Balanceo de carga
Cuando tienes réplicas de pod. Por ejemplo, tiene tres réplicas de una aplicación de microservicio o aplicación MySQL. El servicio recibe cada solicitud, dirigida a esa aplicación, por ejemplo, es MySQL, y la reenvía a una de esas partes.
Bajo acoplamiento
Los servicios son una buena abstracción para el acoplamiento o la comunicación sueltos dentro de los componentes del clúster.
Dentro y fuera del clúster
Los servicios proporcionan comunicación dentro del clúster y fuera del clúster, como las solicitudes del navegador al clúster o la base de datos.
Tipos de servicios en Kubernetes
Clúster
El tipo de servicio más común o predeterminado en Kubernetes. Sin otorgar un acceso exterior, crea un servicio dentro del clúster Kubernetes que las otras aplicaciones pueden utilizar dentro del clúster.
Nodo
Este servicio abre un puerto en particular en todos los nodos implementados en el clúster, y el tráfico que recibe el puerto se reenvía al servicio. No se puede acceder al servicio desde el clúster exterior IP.
Quilancista
Genera el IPS público para habilitar un acceso a través de la nube. Cuando usa el motor Google Kubernetes (GKE), se crea un equilibrador de carga de red con una sola dirección IP a la que los usuarios externos pueden acceder y dirige el tráfico al nodo apropiado en su clúster Kubernetes. El mismo método que Clusterip o Nodeport se puede usar para acceder a él.
Nombre externo
Esta es una forma estándar de representar un almacén de datos externo, como una base de datos, dentro de Kubernetes creando un servicio. Cuando las cápsulas de un espacio de nombres deben comunicarse con un servicio en un espacio de nombres diferente, puede usar ese servicio de nombre externo (como servicio local).
Prerrequisitos:
Aquí hay algunas cosas imprescindibles antes de dirigirse hacia la siguiente sección:
Cómo crear un servicio en Kubernetes
Aquí, lo guiaremos a través de un ejemplo directo que le muestra cómo crear un servicio en Kubernetes. Vamos a empezar!
Paso 1: Comience el clúster de Minikube
Primero, inicie el clúster de minikube para que pueda usar los comandos Kubectl y ejecutar su aplicación. El clúster de Minikube le permite implementar sus nodos, vainas e incluso clúster en el entorno de Kubernetes. Por lo tanto, es esencial mantener el minikube en modo activo utilizando el comando posterior:
> Minikube Start
Esto activa el clúster de Minikube y hace que el entorno Kubernetes esté listo para usar.
Paso 2: COnfigure el manifiesto YAML para el despliegue para Nginx
El servicio dirige todas las solicitudes entrantes a la implementación que establecemos utilizando el siguiente comando:
> Nano SampleDeployment.yaml
El siguiente es el archivo de configuración completo:
Paso 3: cree un objeto de servicio en el clúster
Para agregar un objeto de servicio a un clúster, ejecute el siguiente comando:
> kubeCl aplicar -f muestras de maniobra.yaml
Paso 4: crea tres réplicas para Nginx
El siguiente comando implementa NGINX con tres copias:
> Kubectl Get Depleatment | grep nginx
Paso 5: Especifique la información (pod, réplicas)
Los siguientes comandos le muestran los detalles de la implementación, las réplicas y el POD:
> Kubectl Get ReplicAset | grep nginx
Paso 6: Detalles de la cápsula
Aquí, usamos el siguiente comando para ver las copias exactas de Nginx:
> Kubectl Get Pod | grep nginx
Puede ver que se hacen tres copias de Nginx en la captura de pantalla anterior.
Paso 7: Cvolver a colocar una definición de servicio
En este paso, creamos una definición de servicio utilizando el siguiente comando enumerado:
> Nano Sampleservice.yaml
Con la descripción del servicio mencionada anteriormente, se crea un servicio del tipo noDeport utilizando el espacio de nombres predeterminado, y las solicitudes se reenvían a las cápsulas con la etiqueta NGINX como las vainas que se generaron durante la etapa de creación de implementación anterior.
Paso 8: Cvolver a un servicio
Para crear un servicio, use el siguiente comando:
> kubectl aplicar -f muestras de servicio.yaml
En la salida, puede ver que el servicio se crea con éxito.
Paso 9: Obtenga los detalles del servicio
En este paso, obtenemos la especificación del Servicio y buscamos el Nodeport donde es accesible. El comando para hacerlo es el siguiente:
> Kubectl Get Service | grep nginx
Paso 10: Describa los detalles del servicio
En este paso, utilizamos el comando Describe para ver los detalles del servicio. El comando Describe se da de la siguiente manera:
> kubectl describir el servicio nginx
Se puede acceder al servicio en el puerto 30747, como se ve en la captura de pantalla anterior. Puede experimentar algo diferente porque el puerto fue elegido al azar desde la gama disponible. Ahora, este servicio en Nodeip: NodePort permite el acceso a la aplicación NGINX.
Conclusión
Aprendimos que el servicio es una capa abstracta que se coloca frente a las vainas para proporcionar una dirección IP estable. Podemos acceder a Internet utilizando el tipo de servicio LoadBalancer. Después de eso, implementamos el simple ejemplo de crear un servicio paso a paso en Kubernetes, permitiendo un acceso a la aplicación NGINX.