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