2015-10-20 1 views
1

J'essaie de comprendre comment les kubernetes (k8s) utilisent les ports. Ayant lu la documentation de l'API ainsi que les documents disponibles, je ne suis pas sûr du fonctionnement du mappage de port et du flux de port. Disons que j'ai trois conteneurs avec une base de données hébergée en externe, mon cluster k8s est trois nœuds CoreOS à la base, et il y a un équilibreur de charge défini par logiciel devant les trois nœuds pour transférer le trafic vers les trois nœuds Les ports 3306 et 10082.Mappage des ports dans Kubernetes

  1. Le conteneur A utilise le port entrant 8080, doit communiquer avec les conteneurs B et C, mais n'a pas besoin d'un accès externe. Il est défini avec le contrôleur de réplication A qui possède 1 réplique. Le conteneur B utilise le port entrant 8081 pour communiquer avec le conteneur A et C, mais doit accéder à la base de données externe sur le port 3306. Il est défini avec le contrôleur de réplication B qui a deux réplicas. Le conteneur C utilise le port entrant 8082, doit communiquer avec le conteneur A et B, mais nécessite également un accès externe sur le port 10082 pour les utilisateurs finaux. Il est défini avec le contrôleur de réplication C qui a 3 réplicas.

J'ai trois services pour résumer les contrôleurs de réplication.

  1. service Un contrôleur de réplication A sélectionne et doit transférer le trafic entrant sur le port 9080 au port 8080.
  2. service B sélectionne contrôleur de réplication B et doit transférer le trafic entrant sur les ports 9081 et 3306 aux ports 8081 et 3306 .
  3. service C réplication C Controller sélectionne et doit transférer le trafic entrant sur le port 9082 au port 8082.

J'ai un point final pour la base de données externe, configuré pour sur le port 3306 avec une adresse IPv4.

Objectifs:

  • Les services doivent ports abstraits du contrôleur de réplication.
  • Le service B doit pouvoir être atteint à partir d'un système externe sur le port 3306 sur tous les nœuds.
  • Le service C doit pouvoir être atteint à partir d'un système externe sur le port 10082 sur tous les nœuds.

    1. Quand dois-je utiliser chacun des types de ports;: Avec cette

c'est-à-dire port, targetPort, nodePort, etc.

Répondre

1

Merci pour la configuration très détaillée, mais j'ai encore quelques questions.

1) Quand vous dites "Conteneur" {A, B, C} voulez-vous dire Pod? Ou sont des conteneurs A, B, C dans le même Pod? 2) "Le conteneur B utilise le port 8081 entrant pour parler au conteneur A et C" - Que voulez-vous dire qu'il utilise un port entrant pour parler à d'autres conteneurs? Qui ouvre la connexion, à qui, et sur quel port de destination?3) "doit avoir accès à la base de données externe sur le port 3306" mais plus tard "doit être accessible depuis un système externe sur le port 3306" - B accède-t-il à une base de données externe ou sert-il une base de données 3306? ?

Je suis confus sur où le trafic entre et où il sort dans cette explication.

En général, vous devriez éviter de penser en termes de nœuds et vous devriez éviter de penser à des pods qui parlent à des pods (ou des conteneurs à des conteneurs). Vous avez un certain nombre de Services, chacun étant soutenu par un certain nombre de Pods. Les modules clients (généralement) parlent aux services. Les services reçoivent du trafic sur un port et envoient ce trafic vers les modules targetPort correspondants. Les pods reçoivent du trafic sur un containerPort.

Aucun de ces éléments ne nécessite de hostPorts ou de nodePorts. La dernière question est de savoir lequel de ces services doit être accessible depuis l'extérieur du cluster, et quel est votre environnement capable d'équilibrer la charge. Si vous répondez si loin, alors je peux revenir pour le tour 2 :)