Kubernetes - Service

Un service peut être défini comme un ensemble logique de pods. Il peut être défini comme une abstraction sur le dessus du pod qui fournit une adresse IP et un nom DNS uniques permettant d'accéder aux pods. Avec Service, il est très facile de gérer la configuration de l'équilibrage de charge. Cela aide les pods à évoluer très facilement.

Un service est un objet REST dans Kubernetes dont la définition peut être publiée sur Kubernetes apiServer sur le maître Kubernetes pour créer une nouvelle instance.

Service sans sélecteur

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

La configuration ci-dessus créera un service avec le nom Tutorial_point_service.

Fichier de configuration de service avec sélecteur

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

Dans cet exemple, nous avons un sélecteur; afin de transférer le trafic, nous devons créer un point de terminaison manuellement.

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

Dans le code ci-dessus, nous avons créé un point de terminaison qui acheminera le trafic vers le point de terminaison défini comme «192.168.168.40:8080».

Création de services multi-ports

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

Types de services

ClusterIP- Cela aide à restreindre le service au sein du cluster. Il expose le service au sein du cluster Kubernetes défini.

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

NodePort- Il exposera le service sur un port statique sur le nœud déployé. UNEClusterIP service, auquel NodePortle service acheminera, est automatiquement créé. Le service est accessible depuis l'extérieur du cluster à l'aide duNodeIP:nodePort.

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

Load Balancer - Il utilise l'équilibreur de charge des fournisseurs de cloud. NodePort et ClusterIP les services sont créés automatiquement vers lesquels l'équilibreur de charge externe sera acheminé.

Un service complet yamlfichier avec le type de service comme Node Port. Essayez d'en créer un vous-même.

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