Kubernetes - Servizio

Un servizio può essere definito come un insieme logico di pod. Può essere definito come un'astrazione nella parte superiore del pod che fornisce un unico indirizzo IP e nome DNS tramite il quale è possibile accedere ai pod. Con Service, è molto facile gestire la configurazione del bilanciamento del carico. Aiuta i baccelli a ridimensionarsi molto facilmente.

Un servizio è un oggetto REST in Kubernetes la cui definizione può essere pubblicata su Kubernetes apiServer sul master Kubernetes per creare una nuova istanza.

Servizio senza selettore

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

La configurazione precedente creerà un servizio con il nome Tutorial_point_service.

File di configurazione del servizio con selettore

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

In questo esempio, abbiamo un selettore; quindi, per trasferire il traffico, dobbiamo creare un endpoint manualmente.

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

Nel codice precedente, abbiamo creato un endpoint che instraderà il traffico all'endpoint definito come "192.168.168.40:8080".

Creazione di servizi multi-porta

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

Tipi di servizi

ClusterIP- Questo aiuta a limitare il servizio all'interno del cluster. Espone il servizio all'interno del cluster Kubernetes definito.

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

NodePort- Esporrà il servizio su una porta statica sul nodo distribuito. UNClusterIP servizio, a cui NodePortservizio verrà instradato, viene creato automaticamente. È possibile accedere al servizio dall'esterno del cluster utilizzandoNodeIP:nodePort.

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

Load Balancer - Utilizza il bilanciamento del carico dei provider di servizi cloud. NodePort e ClusterIP i servizi vengono creati automaticamente a cui instraderà il bilanciatore del carico esterno.

Un servizio completo yamlfile con tipo di servizio come Porta nodo. Prova a crearne uno tu stesso.

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