【发布时间】:2019-08-08 13:37:15
【问题描述】:
我正在部署简单的 hello-world 微服务,它侦听由以下变量给出的端口:
PORT = os.environ.get("TEST_SERVICE_PORT", "").strip() or "50001"
我部署它时没有在容器上配置任何变量,并希望它在默认的 50001 端口上提供服务,但得到了错误
socket.gaierror: [Errno -8] Servname not supported for ai_socktype
当我登录容器查看环境时,我发现环境中充满了不同的变量(其中一些属于其他服务),并且TEST_SERVICE_PORT变量存在并且绝对不包含端口:
root@test-service-697464787c-xpd6k:/opt/app/src# env | grep TEST
TEST_SERVICE_PORT_7002_TCP_ADDR=10.145.23.43
TEST_SERVICE_SERVICE_PORT_GRPC_API=7002
TEST_SERVICE_PORT_7002_TCP_PORT=7002
TEST_SERVICE_PORT=tcp://10.145.23.43:7002
TEST_SERVICE_SERVICE_HOST=10.145.23.43
TEST_SERVICE_PORT_7002_TCP=tcp://10.145.23.43:7002
TEST_SERVICE_PORT_7002_TCP_PROTO=tcp
TEST_SERVICE_SERVICE_PORT=7002
我有以下问题,但无法在文档中找到答案:
是什么造成了这些变量?我可以以某种方式将容器与它们隔离开来吗?还是它们是由 kubernetes 故意设置的,并且用于某些我不知道的目的?我应该如何命名我的配置变量以避免命名冲突?我应该使用该变量而不是使用服务名称作为主机名吗?
有following documentation,但它只解释变量TEST_SERVICE_SERVICE_PORT和TEST_SERVICE_SERVICE_HOST。 TEST_SERVICE_PORT 和其他人是什么意思呢?什么增加了TEST_SERVICE_SERVICE_PORT_GRPC_API?
我正在使用的集群上还安装了 Istio 和 Ambassador 网关。
【问题讨论】:
-
也请分享您的 yaml 部署文件。这样会更容易找出问题所在?
-
@Alberto 谢谢,但这仅回答了我第一个问题的 25%。我应该以不同的方式命名服务吗?或者对环境变量使用不同的前缀?或者在部署中重新定义容器配置中的变量?
-
@Bunyk 请与我们分享您的部署文件。
-
@abielak 共享
标签: kubernetes environment-variables 12factor