我在Kubernetes服务中添加了第二个TCP端口,并注意到kubelet为{SVCNAME}_SERVICE_PORT
环境变量分配的端口似乎取决于顺序。
例如,如果我在我的服务中这样声明我的端口:
ports:
- name: example
port: 9000
protocol: TCP
- name: http
port: 8080
protocol: TCP
则FOO_SERVICE_PORT
将被分配值9000
。但如果我改变顺序。。。
ports:
- name: http
port: 8080
protocol: TCP
- name: example
port: 9000
protocol: TCP
则CCD_ 4现在是CCD_。
有没有办法强制kubelet选择一个特定的端口设置到这个变量中,这样它就不依赖于我在中定义端口的顺序?也就是说,是否存在我可以设置的配置,以便它始终使用";http";端口(8080(作为它分配给该变量的值,而不管该特定端口在列表中的何处声明?
在旧版本的Kubernetes中,服务只能定义一个端口。当他们添加对多个端口的支持时,他们根据设计选择将第一个端口放在向后兼容的环境变量中。没有任何配置可以更改此行为。
但是,Kubernetes还为命名端口设置了{serviceName}_SERVICE_PORT_{portName}
环境变量,因此您可以通过端口名称获得端口号。例如:
FOO_SERVICE_PORT_EXAMPLE=9000
FOO_SERVICE_PORT_HTTP=8080