How to expose multiple port in services in kubernetes or Multi-Port Services

You have two options:

  1. You could have multiple services, one for each port. As you pointed out, each service will end up with a different IP address
  2. 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
service/svc3 created

[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
Name:              svc3
Namespace:         default
Labels:            app=svc3
Annotations:       <none>
Selector:          app=svc3
Type:              ClusterIP
IP:                10.102.66.226
Port:              8080-80  8080/TCP
TargetPort:        80/TCP
Endpoints:         <none>
Port:              8090-80  8090/TCP
TargetPort:        80/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>
Rajesh Kumar
Follow me