I am becoming more familiar with Kubernetes by the day, but am still at a basic level. I am also not a networking guy.
I am staring at the following snippet of a Service definition, and I can't form the right picture in my mind of what is being declared:
spec:
type: NodePort
ports:
- port: 27018
targetPort: 27017
protocol: TCP
Referencing the ServicePort documentation, which reads in part:
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
My understanding is that the port that a client outside of the cluster will "see" will be the dynamically assigned one in the range of 30000
-32767
, as defined in the documentation. This will, using some black magic that I do not yet understand, flow to the targetPort
on a given node (27017
in this case).
So what is the port
used for here?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…