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
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
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.