J'essaie d'explorer les services de kubernetes. Lorsque je lis la définition de service, j'ai constaté qu'il y avait targetPort et que le port spécifie dans la définition de service.
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
Ici, quelle est la différence entre la définition du service port et targetPort dans kubernetes? Quelqu'un peut-il clarifier la confusion?
Service: Cela dirige le trafic vers un pod.
TargetPort: il s'agit du port réel sur lequel votre application s'exécute sur le conteneur.
Port: Parfois, votre application à l'intérieur du conteneur sert différents services sur un port différent. Ex: - L'application réelle peut exécuter 8080 et les vérifications de l'état pour cette application peuvent s'exécuter sur le port 8089 du conteneur. Ainsi, si vous utilisez le service sans port, il ne sait pas vers quel port du conteneur il doit rediriger la demande. Le service doit avoir un mappage pour pouvoir atteindre le port spécifique du conteneur.
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- name: http
nodePort: 30475
port: 8089
protocol: TCP
targetPort: 8080
- name: metrics
nodePort: 31261
port: 5555
protocol: TCP
targetPort: 5555
- name: health
nodePort: 30013
port: 8443
protocol: TCP
targetPort: 8085
si vous appuyez sur le service my-service: 8089, le trafic est acheminé vers 8080 du conteneur (targetPort). De même, si vous frappez my-service: 8443, il est redirigé vers 8085 du conteneur (targetPort).
Mais ce myservice: 8089 est interne au cluster kubernetes et peut être utilisé quand une application veut communiquer avec une autre application. Donc, pour frapper le service de l'extérieur du cluster, quelqu'un doit exposer le port de la machine hôte sur laquelle kubernetes est en cours d'exécution afin que le trafic soit redirigé vers un port du conteneur. Dans cela peut utiliser nodePort.
Dans l'exemple ci-dessus, vous pouvez accéder au service depuis l'extérieur du cluster (Postman ou tout reste de client) par Host_ip: Nodeport.
Supposons que votre ordinateur hôte possède l'adresse IP du 10.10.20.20. Vous pouvez accéder aux services de santé avant le 10.10.20.20:30475,10.10.20.20:31261,10.10.20.20:30013.