我们以 Docker 作为容器运行时在 Kubernetes 中运行或组件。它的一个问题是 pod 环境被 Docker 风格的链接变量污染了,比如
SERVICENAME_PORT_8181_TCP
SERVICENAME_PORT_HTTP
- ......
SERVICENAME_PORT
对于每个可见服务(相同命名空间中的服务)。在这种情况下,自动创建的变量很容易与显式声明的环境发生冲突。这有时会导致难以诊断的问题。我也不想依赖那些自动变量,因为我希望容器不依赖于 Kubernetes 服务配置的细节。目前,我正在为显式变量添加唯一名称前缀以避免此类冲突。
有没有办法配置集群不为每个可见服务添加这些自动变量?或者,使用其他运行时会containerd
解决这个问题吗?令我惊讶的是,由于通过环境变量进行配置被认为是一种很好的做法,因此没有现成的 googleable 解决方案。一般来说,我如何在不遇到此类命名冲突的情况下使用环境?或者服务名称被认为是与容器合同的一部分,我不应该随意更改它们?