34

有没有办法在 kubernetes 服务 YAML 定义中指定自定义NodePort端口?我需要能够在我的配置文件中明确定义端口。

4

5 回答 5

53

您可以NodePortServiceDeployment 中设置类型。请注意,Node Port Range为您的 API 服务器配置了一个选项--service-node-port-range(默认情况下30000-32767)。您也可以通过设置对象nodePort下的属性来专门指定该范围内的端口Port,否则系统将为您选择该范围内的端口。

因此Service,指定的示例NodePort如下所示:

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

有关 NodePort 的更多信息,请参阅此文档。如需配置 API Server 节点端口范围,请参阅

于 2017-05-12T18:30:29.873 回答
4

您可以在 service.yaml 文件中使用 nodeport 定义静态 NodePort

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

于 2019-08-23T09:59:41.603 回答
1

您实际上可以运行此命令以查看如何在 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

于 2020-07-23T06:09:48.197 回答
1

是的,您可以自己定义所有这三个端口

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

于 2021-03-08T16:32:03.983 回答
0

对于需要在不创建yaml文件的情况下使用kubectl命令的用户,可以创建一个指定端口的NodePort服务:

kubectl create nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]

例如:

kubectl create service nodeport myservice --node-port=31000 --tcp=3000:80

您可以查看 Kubectl 参考以获取更多信息:

于 2021-10-08T05:52:16.820 回答