我设置了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
您的问题似乎与services
中环境变量的处理有关。根据我的理解,当作为服务运行时,env变量被剥离,因此当您的进程作为服务运行时,您将无法访问bash看到的内容。
This answer提供了很好的描述和一些解决方法。
希望这可以帮助!
我找到了答案。 / proc / 1 / environ包含环境,当我作为服务运行时,我设法读取env。希望这将有助于未来的人。