Kubernetes内的systemd服务无法获取环境

时间:2019-04-16 16:52:30

标签: kubernetes centos systemd

我设置了Centos systemd服务,但无法读取kubernetes的env变量。如果我在Pod内运行bash,则可以看到env(例如_UI_SERVICE_PORT_TCP_443 = 443,KUBERNETES_PORT_443_TCP_ADDR = 10.202.0.1或container = docker),但是当我在容器内将bash脚本作为服务执行时,却看不到。

我还尝试了Type = forking和ExecStart = / bin / bash,因为相信执行的bash会继承kubernetes env,但这很干净。

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/ LANG=en_US.UTF-8 SHLVL=1
_=/bin/printenv

[Unit] Description= script after boot on k8s After=e.service

[Service] Type=forking ExecStart=@BINDIR@/virtual_service.py

2 个答案:

答案 0 :(得分:0)

您的问题似乎与services中环境变量的处理有关。据我了解,env var作为服务运行时会被剥离,因此您将无法访问bash在将进程作为服务运行时看到的内容。

This answer提供了很好的描述和一些解决方法。

希望这会有所帮助!

答案 1 :(得分:0)

我找到了答案。 / proc / 1 / environ包含环境,当我作为服务运行时,我设法读取了环境。 希望这对将来有帮助的人。