为了账号安全,请及时绑定邮箱和手机立即绑定

如何知道可以从 Kubernetes API Server 分配哪个节点端口?

如何知道可以从 Kubernetes API Server 分配哪个节点端口?

Go
白衣非少年 2022-06-13 16:22:26
我想弄清楚当创建一个节点端口类型的新服务时,kubernetes 如何知道可以分配哪个节点端口,如下所示:apiVersion: v1kind: Servicemetadata:  name: my-servicespec:  type: NodePort  selector:    app: MyApp  ports:    - port: 80      targetPort: 80我搜索了谷歌并找到了这些 kubernetes 源代码,但我不明白它是如何工作的。 https://github.com/kubernetes/kubernetes/blob/master/pkg/registry/core/service/portallocator/allocator.go
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

Nodeport 在 30000-32767 之间随机选择。您可以在服务定义中进行设置。


apiVersion: v1

kind: Service

metadata:

  name: my-service

spec:

  type: NodePort

  selector:

    app: MyApp

  ports:

      # By default and for convenience, the `targetPort` is set to the same value as the `port` field.

    - port: 80

      targetPort: 80

      # Optional field

      # By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)

      nodePort: 30007

来自文档:https ://kubernetes.io/docs/concepts/services-networking/service/#nodeport


更新


放置在包kubernetes/pkg/registry/core/service/portallocator中的类负责为服务分配节点端口。


此测试记录了行为:https ://github.com/kubernetes/kubernetes/blob/master/pkg/registry/core/service/portallocator/operation_test.go


Kubernetes 只占用一个随机端口,如果该端口不是免费的,它会占用下一个端口。


如果您可以阅读该包中的其他类,则可以很好地了解该行为。


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号