Artem Dolobanko
Artem Dolobanko

Reputation: 2339

Kubernetes NodePort Custom Port

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.

Upvotes: 37

Views: 34893

Answers (5)

snnsnn
snnsnn

Reputation: 13698

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:

Upvotes: 1

qmkiwi
qmkiwi

Reputation: 135

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

Upvotes: 5

Ankur Kothari
Ankur Kothari

Reputation: 908

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

Upvotes: 2

Sachin Arote
Sachin Arote

Reputation: 1027

You can define static NodePort using nodeport in service.yaml file

spec:
  type: NodePort
  ports:
    - port: 3000
      nodePort: 31001
      name: http

Upvotes: 5

Oswin Noetzelmann
Oswin Noetzelmann

Reputation: 9545

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.

Upvotes: 61

Related Questions