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