In a kubernetes deployment I specify a port like so:
containers:
- name: nginx
image: nginx:latest
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
Now in a service I can reference that port like so (allows me to only specify the external port in the service):
spec:
type: ClusterIP
ports:
- name: nginx-port
port: 80
targetPort: nginx-port
protocol: TCP
Now the question, can I reference service and port elsewhere using the following syntax nginx-service.default.svc.cluster.local:nginx-port
? You know I can make reference to services using this special names, but I find myself hardcoding the port number like so nginx-service.default.svc.cluster.local:80
.
Usually, you refer to a target port by its number. But you can give a specific name to each pod`s port and refer to this name in your service specification.
This will make your service clearer. Here a small example:
apiVersion: v1
kind: Pod
metadata:
name: named-port-pod
labels:
app: named-port-pod
spec:
containers:
- name: echoserver
image: gcr.io/google_containers/echoserver:1.4
ports:
- name: pod-custom-port
containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: named-port-svc
spec:
ports:
- port: 80
targetPort: pod-custom-port
selector:
app: named-port-pod