Was bedeutet es für einen Service-Typ NodePort, und haben beide port und targetPort spezifiziert?
Bin ich immer mehr vertraut mit Kubernetes von Tag zu Tag, aber bin immer noch auf einer grundlegenden Ebene. Ich bin auch nicht einer Vernetzung Kerl.
Ich bin starrte auf den folgenden Ausschnitt von einer Service-definition, und ich kann nicht das richtige Bild in meinem Kopf von dem, was erklärt wird:
spec:
type: NodePort
ports:
- port: 27018
targetPort: 27017
protocol: TCP
Verweisen auf die ServicePort-Dokumentation, das liest sich im Artikel:
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
Mein Verständnis ist, dass der port, Clients außerhalb des Clusters "sehen", werden die dynamisch zugewiesene eine im Bereich der 30000
- 32767
definiert in der Dokumentation. Diese wird, mit einigen schwarzen Magie, die ich noch nicht verstehen, fließen an die targetPort
auf einen bestimmten Knoten (27017
in diesem Fall).
Also, was ist die port
verwendet für hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
nodePort
ist der port, dass Clients außerhalb des Clusters "sehen".nodePort
geöffnet wird, auf jedem Knoten im cluster über kube-proxy. Mit iptables-Magie Kubernetes (k8s) leitet dann den Verkehr von diesem port an einen matching-service-pod (auch wenn das pod läuft auf einer komplett anderen Knoten).port
ist der port, den Ihre Dienst überwacht innerhalb der cluster. Nehmen wir mal dieses Beispiel:Aus in meine k8s-cluster wird dieser Dienst, erreichbar über
my-service.default.svc.cluster.local:8080
(Dienst-zu-Dienst-Kommunikation innerhalb der cluster) und jede Anforderung zu erreichen, es wird an einer running-pod auftargetPort
8070.tagetPort
ist auch standardmäßig den gleichen Wert wieport
wenn nicht anders angegeben.nodePort
ist nicht einen port, den der Dienst hört auf? Stattdessen ist es ein port, der geöffnet wird, auf den Knoten, der das hosting der Hülsen, die die Service-Fronten?nodePort
ist einzigartig, also 2 verschiedene Dienste können nicht den gleichennodePort
zugeordnet. Einmal erklärt, die k8s-master behält sich vor, dienodePort
für diesen Dienst.nodePort
eröffnet anschließend auf ALLE - Knoten (master und worker) - auch die Knoten, die nicht laufen, eine Schule, die service - k8s iptables magic kümmert sich um das routing. So können Sie Ihre service-Anfrage außerhalb Ihrer k8s-cluster auf jedem KnotennodePort
ohne sich Gedanken, ob ein pod geplant ist oder nicht.nodePort
Strecken, um den service, was wiederum die Routen an den pod / wenn man auf den service dann direkt dienodePort
Schritt übersprungen / die "Magische routing" erfolgt durchkube-proxy
". Dies führte mich dazu, zu sagen (mit notation erfunden): "nodePort
->port
->targetPort
, nichtnodePort
->targetPort
&&port
->targetPort
".port
ersten (ausnodePort
) oder ob in einigen Fällen überspringt diesen Schritt und geht direktnodePort
->targetPort
. Danke für diese Klarstellung!Besser erklären, das Konzept, ich Stelle mir Service NodePort Konzept.
Als @fishi erwähnt in seiner Antwort, NodePort ermöglicht auszusetzen, k8s-host-port(aka
nodePort
) an den externen Kunden. Ein client kann direkt aufnodePort
und k8s leitet den Verkehr zu den notwendigen port.K8s behält sich eine
nodePort
auf allen Knoten. Alle Knoten, die mit der Ausführung des Dienstes die Schoten dieser port offen ist.Hülsen zugegriffen werden kann, nicht nur durch die interne cluster-IP, sondern auch über Knoten-IP-und port reserviert aka
HOST_IP:NODE_PORT
- pair-Mädchen.