我们如何在Kubernetes中暴露一系列端口?
我的云应用程序在运行时使用一系列端口(40000 ~42000)。
我该如何在Kubernetes服务YAML文件中指定一系列暴露的端口?
我们如何在Kubernetes中暴露一系列端口?
我的云应用程序在运行时使用一系列端口(40000 ~42000)。
我该如何在Kubernetes服务YAML文件中指定一系列暴露的端口?
一种选择是使用go-templates生成所有端口的yaml,然后部署该yaml,接着使用gomplate
编译这个yaml。
lotsofports.yaml
apiVersion: v1
kind: Service
metadata:
namespace: some-service
labels:
name: some-service
spec:
ports:
{{- range seq 0 2000}}
- port: {{add 40000 .}}
targetPort: {{add 40000 .}}
name: exposed-port-{{add 40000 .}}
{{- end -}}
selector:
name: some-service
sessionAffinity: None
type: ClusterIP
然后编译YAML文件:
gomplate -f lotsofports.yaml > service.yaml
目前 Kubernetes 服务不支持端口范围,请参见 https://github.com/kubernetes/kubernetes/issues/23864
更新:截至 2021 年,Kubernetes Enhancement Proposal 拥有了该需求的字段:https://github.com/kubernetes/enhancements/pull/2611
正如@Thomas指出的,目前还不支持。
然而,作为解决方法,您可以尝试使用Helm模板。在values.yaml文件中创建具有服务模板和端口的图表。
Original Answer翻译成"最初的回答"