web-dev-qa-db-fra.com

Différence entre targetPort et port dans kubernetes Définition du service

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?

53
Jacob

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.

3
Manikanta P