Que signifie, pour un Service de type NodePort, et ont à la fois le port et targetPort spécifié?
Je suis en train de devenir de plus en plus familiers avec Kubernetes de jour en jour, mais je suis encore à un niveau de base. Je suis également pas un réseau guy.
Je suis à regarder l'extrait suivant d'une définition de Service, et je ne peux faire la photo de droite dans mon esprit de ce qui est déclaré:
spec:
type: NodePort
ports:
- port: 27018
targetPort: 27017
protocol: TCP
Référencement de la ServicePort documentation, qui se lit en partie:
nodePort The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually
integer assigned by the system. If specified, it will be allocated to the service if unused or else creation of the
service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info:
http://kubernetes.io/docs/user-guide/services#type--nodeport
port The port that will be exposed by this service.
integer
targetPort Number or name of the port to access on the pods targeted by the service. Number must be in the range 1
IntOrString to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the
target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map).
This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field.
More info: http://kubernetes.io/docs/user-guide/services#defining-a-service
Ma compréhension est que le port d'un client à l'extérieur du cluster "voir" sera attribuée dynamiquement un dans la gamme de 30000
-32767
, tel que défini dans la documentation. Ce sera, à l'aide de la magie noire que je n'ai pas encore comprendre, le débit de la targetPort
sur un nœud donné (27017
dans ce cas).
Alors, quelle est la port
utilisé pour ici?
Vous devez vous connecter pour publier un commentaire.
nodePort
est le port d'un client à l'extérieur du cluster "consultez".nodePort
est ouvert sur tous les nœuds de votre cluster via kube-proxy. Avec iptables magie Kubernetes (k8s) puis achemine le trafic de ce port à un service de jumelage de la gousse (même si ce pod est en cours d'exécution sur un tout autre nœud).port
est le port de votre service d'écoute à l'intérieur du cluster. Prenons cet exemple:De l'intérieur de mon k8s cluster de ce service sera accessible via
my-service.default.svc.cluster.local:8080
(service de la communication de service à l'intérieur de votre cluster) et toute demande d'y arriver, est transmis à l'exécution d'un pod surtargetPort
8070.tagetPort
est aussi par défaut la même valeur queport
si non spécifié autrement.nodePort
est pas, un port que le Service d'écoute? Il s'agit plutôt d'un port qui est ouvert sur les Noeuds d'hébergement des Gousses que le Service fronts?nodePort
est unique, donc 2 différents services n'ont pas le mêmenodePort
attribué. Une fois déclarée, la k8s maître des réserves quinodePort
pour ce service.nodePort
est ouvert puis sur TOUS noeud (le maître et l'ouvrier) - également les nœuds qui ne sont pas exécuter une gousse de ce service - k8s iptables la magie prend en charge le routage. De cette façon, vous pouvez faire votre demande de service à partir de l'extérieur de votre k8s cluster à n'importe quel nœudnodePort
sans se soucier si un module est prévu ou pas.nodePort
itinéraires pour le service, qui à son tour les routes du pod / si vous frappez le service directement puis lanodePort
étape est sautée / le magique routage' est géré parkube-proxy
". Cela m'a conduit à dire (inventé à l'aide de la notation): "nodePort
->port
->targetPort
, pasnodePort
->targetPort
&&port
->targetPort
".port
première (venant denodePort
) ou si, dans certains cas, il saute cette étape et va directementnodePort
->targetPort
. Merci pour cette précision!Pour mieux expliquer le concept, je visualise Service NodePort concept.
Comme @fishi mentionné dans sa réponse NodePort permet d'exposer k8s de port de l'hôte(aka
nodePort
) pour les clients externes. Un client peut accéder directementnodePort
et k8s transmet un trafic à la nécessaire port.K8s réserve une
nodePort
sur l'ensemble de ses nœuds. Tous les nœuds que l'exécution du Service les gousses ont ce port ouvert.Gousses peuvent être accessibles non seulement à l'interne IP de cluster, mais aussi par le biais du nœud IP et de ports réservés aka
HOST_IP:NODE_PORT
paire.