There are several different port declaration fields in Kubernetes. This is a quick overview of each type, and what each means in your Kubernetes YAML.
This array, defined in
a list of ports that get exposed by the container. You don’t really need
to specify this list—even if it’s empty, as long as your containers are
listening on the port, they’ll still be available for network access.
This just provides some extra information to Kubernetes.
service.spec.ports list configures
which requests to a service port get forwarded to which ports on its pods.
A successful request can be made from outside the cluster to the node’s IP address and
nodePort, forwarded to the service’s
and received on the
targetPort by the pod.
This setting makes the service visible outside the Kubernetes cluster by the node’s IP address and the port number declared in this property. The service also has to be of type NodePort (if this field isn’t specified, Kubernetes will allocate a node port automatically).
Expose the service on the specified port internally within the cluster. That is, the service becomes visible on this port, and will send requests made to this port to the pods selected by the service.
This is the port on the pod that the request gets sent to. Your application needs to be listening for network requests on this port for the service to work.