You have two options:
- You could have multiple services, one for each port. As you pointed out, each service will end up with a different IP address
- You could have a single service with multiple ports. In this particular case, you must give all ports a name.
For some Services, you need to expose more than one port. Kubernetes lets you configure multiple port definitions on a Service object. When using multiple ports for a Service, you must give all of your ports names so that these are unambiguous. For example:
How to work with command line?
[ec2-user@ip-172-31-26-152 ~]$ kubectl create service clusterip svc3 --tcp=8080:80 --tcp=8090:80
[ec2-user@ip-172-31-26-152 ~]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d1h
svc1 ClusterIP 10.98.191.0 <none> 8080/TCP 33m
svc2 ClusterIP 10.104.34.223 <none> 8080/TCP,8090/TCP 5m41s
svc3 ClusterIP 10.102.66.226 <none> 8080/TCP,8090/TCP 8s
[ec2-user@ip-172-31-26-152 ~]$ kubectl describe svc svc3
Port: 8080-80 8080/TCP
Port: 8090-80 8090/TCP
Session Affinity: None