Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
informatique:kebernetes:kube_service [2023/12/15 14:48] benoit [ClusterIP] |
informatique:kebernetes:kube_service [2023/12/18 08:23] (Version actuelle) benoit [LoadBalancer] |
||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
C'est le mode par défaut de Kubernetes lorsque l'on crée un service. Il permet d'exposer un port au sein du cluster uniquement. | C'est le mode par défaut de Kubernetes lorsque l'on crée un service. Il permet d'exposer un port au sein du cluster uniquement. | ||
- | **Remarque** :!: L'IP n'est pas publiée en dehors du cluster. L'IP allouée ne sera accessible que par les nodes du cluster. A noter aussi que les ClusterIP sont assignées par des règles Iptables. | + | **Remarque** :!: L'IP n'est pas publiée en dehors du cluster. L'IP allouée ne sera accessible que par les nodes du cluster. A noter aussi que les ClusterIP sont assignées par des règles Iptables dans la table NAT. |
Ci-dessous un fichier YAML pour démarrer un Pod nginx et son service : | Ci-dessous un fichier YAML pour démarrer un Pod nginx et son service : | ||
Ligne 129: | Ligne 129: | ||
===== NodePort ===== | ===== NodePort ===== | ||
- | La création d'un service de type **NodePort** permet de publier un port à l'extérieur du cluster. Un port sera ouvert au niveau de l'hôte (le serveur virtuel ou physique). Les ports qui peuvent être utilisés sont supérieur à 30000. | + | La création d'un service de type **NodePort** créé aussi un service **ClusterIP** mais en plus un port sera publié à l'extérieur du cluster. Un port sera ouvert sur chacun des nodes (le serveur virtuel ou physique). Les ports qui peuvent être utilisés sont supérieur à 30000. |
Comme pour la création d'un service ClusterIP plus haut, nous allons créer un service et lancer un Pod : | Comme pour la création d'un service ClusterIP plus haut, nous allons créer un service et lancer un Pod : | ||
Ligne 192: | Ligne 192: | ||
k8s-node Ready <none> 11d v1.28.2 10.0.4.248 <none> Debian GNU/Linux 12 (bookworm) 6.1.0-15-cloud-amd64 docker://24.0.7 | k8s-node Ready <none> 11d v1.28.2 10.0.4.248 <none> Debian GNU/Linux 12 (bookworm) 6.1.0-15-cloud-amd64 docker://24.0.7 | ||
- | | + | ===== LoadBalancer ===== |
+ | |||
+ | :!: A approfondir :!: | ||
+ | |||
+ | La création d'un service de type **LoadBalancer** créé aussi les services **NodePort** et **ClusterIP**. En revanche, il permet d'équilibrer la charge vers les nodes avec l'utilisation d'un service de LoadBalancer externe ou cloud. | ||
+ | |||
+ | Fichier YAML correspond (identique à NodePort mais le type change) : | ||
+ | apiVersion: v1 | ||
+ | kind: Pod | ||
+ | metadata: | ||
+ | name: nginx | ||
+ | labels: | ||
+ | app: mywebapp | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: nginx | ||
+ | image: nginx:stable | ||
+ | ports: | ||
+ | - containerPort: 80 | ||
+ | --- | ||
+ | apiVersion: v1 | ||
+ | kind: Service | ||
+ | metadata: | ||
+ | name: nginx-service | ||
+ | spec: | ||
+ | type: LoadBalancer | ||
+ | selector: | ||
+ | app: mywebapp | ||
+ | ports: | ||
+ | - name: mywebport | ||
+ | protocol: TCP | ||
+ | port: 8080 | ||
+ | targetPort: 80 | ||
+ | nodePort: 31000 | ||
+ | |||
+ | ===== ExternalName ===== | ||
===== Ingress ===== | ===== Ingress ===== |