DenCowboy
DenCowboy

Reputation: 15066

How to create Kubernetes service with kubectl which exposes two ports

I have deployed a jenkins in Kubernetes. Now I want to create a service above the replicaset:

kubectl expose rs jenkins-xxx   --port=8080 --target-port=8080 --name=jenkins --namespace=ci

This works fine. service-ip:8080 is redirecting to pod:8080. But I want also exposing 5000 inside the same service so that the service-ip is the same? How will my kubectl command look like? I want to do this with kubectl

Upvotes: 0

Views: 836

Answers (2)

Rubber Duck
Rubber Duck

Reputation: 3723

put this yaml declaration in a file "your-service.yaml"

apiVersion: v1
kind: Service
metadata:
  labels:
    app: your-app
  name: your-service
spec:
  type: LoadBalancer
  loadBalancerSourceRanges:
  - 10.0.0.8/32
  ports:
    - name: some-endpoint-name
      nodePort: 30100
      port: 8081
      targetPort: 8081
    - name: another-endpoint-name
      nodePort: 30101
      port: 8082
      targetPort: 8082
  selector:
    app: your-app

run this from the same folder:

kubectl create -f your-service.yaml

Upvotes: 0

coreypobrien
coreypobrien

Reputation: 2041

If your Pod exposes multiple ports, you can use kubectl expose without any --port or --target-port parameters to expose them all as specified (e.g. 8080->8080 and 5000->5000).

kubectl expose rs jenkins-xxx --name=jenkins --namespace=ci

If you have more than those 2 ports specified on the Pod and only want to expose those 2, then you can't use kubectl expose and you'll have to create the Service manifest and kubectl apply it.

Upvotes: 3

Related Questions