Kubernetes - Servicio

Un servicio se puede definir como un conjunto lógico de pods. Se puede definir como una abstracción en la parte superior del pod que proporciona una única dirección IP y un nombre DNS mediante el cual se puede acceder a los pods. Con Service, es muy fácil administrar la configuración del equilibrio de carga. Ayuda a las vainas a escalar muy fácilmente.

Un servicio es un objeto REST en Kubernetes cuya definición se puede publicar en Kubernetes apiServer en el maestro de Kubernetes para crear una nueva instancia.

Servicio sin selector

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   ports:
   - port: 8080
   targetPort: 31999

La configuración anterior creará un servicio con el nombre Tutorial_point_service.

Archivo de configuración de servicio con selector

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   selector:
      application: "My Application" -------------------> (Selector)
   ports:
   - port: 8080
   targetPort: 31999

En este ejemplo, tenemos un selector; así que para transferir tráfico, necesitamos crear un punto final manualmente.

apiVersion: v1
kind: Endpoints
metadata:
   name: Tutorial_point_service
subnets:
   address:
      "ip": "192.168.168.40" -------------------> (Selector)
   ports:
      - port: 8080

En el código anterior, hemos creado un punto final que enrutará el tráfico al punto final definido como "192.168.168.40:8080".

Creación de servicios multipuerto

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   selector:
      application: “My Application” -------------------> (Selector)
   ClusterIP: 10.3.0.12
   ports:
      -name: http
      protocol: TCP
      port: 80
      targetPort: 31999
   -name:https
      Protocol: TCP
      Port: 443
      targetPort: 31998

Tipos de servicios

ClusterIP- Esto ayuda a restringir el servicio dentro del clúster. Expone el servicio dentro del clúster de Kubernetes definido.

spec:
   type: NodePort
   ports:
   - port: 8080
      nodePort: 31999
      name: NodeportService

NodePort- Expondrá el servicio en un puerto estático en el nodo implementado. UNClusterIP servicio, al cual NodePortel servicio se enrutará, se crea automáticamente. Se puede acceder al servicio desde fuera del clúster mediante elNodeIP:nodePort.

spec:
   ports:
   - port: 8080
      nodePort: 31999
      name: NodeportService
      clusterIP: 10.20.30.40

Load Balancer - Utiliza el equilibrador de carga de los proveedores de la nube. NodePort y ClusterIP Los servicios se crean automáticamente a los que se enrutará el equilibrador de carga externo.

Un servicio completo yamlarchivo con el tipo de servicio como puerto de nodo. Intente crear uno usted mismo.

apiVersion: v1
kind: Service
metadata:
   name: appname
   labels:
      k8s-app: appname
spec:
   type: NodePort
   ports:
   - port: 8080
      nodePort: 31999
      name: omninginx
   selector:
      k8s-app: appname
      component: nginx
      env: env_name