Is there way to specify a custom NodePort port in a kubernetes service YAML definition? I need to be able to define the port explicitly in my configuration file.
You can set the type NodePort
in your Service
Deployment. Note that there is a Node Port Range
configured for your API server with the option --service-node-port-range
(by default 30000-32767
). You can also specify a port in that range specifically by setting the nodePort
attribute under the Port
object, or the system will chose a port in that range for you.
So a Service
example with specified NodePort
would look like this:
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
name: nginx
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
name: http
- port: 443
nodePort: 30443
name: https
selector:
name: nginx
For more information on NodePort, see this doc. For configuring API Server Node Port range please see this.
You can define static NodePort using nodeport in service.yaml file
spec:
type: NodePort
ports:
- port: 3000
nodePort: 31001
name: http
Yeah you can define all those three port by your own
apiVersion: v1
kind: Service
metadata:
name: posts-srv
spec:
type: NodePort
selector:
app: posts
ports:
- name: posts
protocol: TCP
port: 4000
targetPort: 4000
nodePort: 31515
you can actually run this command to see how you can achieve that in yaml.
kubectl create service hello-svc --tcp=80:80 --type NodePort --node-port 30080 -o yaml --dry-run > hello-svc.yaml
https://pachehra.blogspot.com/2019/11/kubernetes-imperative-commands-with.html
For those who need to use kubectl commands without creating a yaml file, you can create a NodePort service with a specified port:
kubectl create nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]
For example:
kubectl create service nodeport myservice --node-port=31000 --tcp=3000:80
You can check Kubectl reference for more:
© 2022 - 2024 — McMap. All rights reserved.