Rui*_*Rui 2 environment-variables docker kubernetes
我正在尝试在 Kubernetes 上运行我的应用程序。PATH我的 docker 容器有和等环境变量LD_LIBRARY_PATH,它们在 Dockerfile 中设置。我尝试在 yaml 文件中更改它们,如下所示:
env:
- name: LD_LIBRARY_PATH
value: "foo:$(LD_LIBRARY_PATH)"
Run Code Online (Sandbox Code Playgroud)
上面的配置不行,我只是LD_LIBRARY_PATH=foo:$(LD_LIBRARY_PATH)在pod里看到的。此方法似乎适用于 Kubernetes 环境变量,例如KUBERNETES_PORT_443_TCP_PROTO,但不适用于 docker 环境变量。
我的问题是:
我认为envyaml中的设置是在容器运行时之前注入到docker中的,因此kubernetes无法读取.yaml的值LD_LIBRARY_PATH。因此它无法更改变量。我理解得对吗?
如何使用 kubernetes env 更改容器环境变量?我知道我可以在commandyaml 文件字段中设置环境变量,但这似乎不干净,还有其他方法可以做到这一点吗?
如果 Kubernetes 无法更改现有的环境,是否意味着 yaml 文件中的 env 字段仅用于添加新的环境?
谢谢你!
Kubernetes 变量扩展语法仅适用于 Kubernetes 直接了解的事物。在容器内部,环境变量可能来自几个地方(DockerfileENV指令、基本容器环境本身、入口点脚本中的设置),而 Kubernetes 不考虑其中任何一个;它只考虑同一容器规格中的事物。API定义EnvVar对此进行了提示:
变量引用 $(VAR_NAME) 使用容器中先前定义的环境变量和任何服务环境变量进行扩展。
您无法使用此 Kubernetes 语法按照您描述的方式更改环境变量。您只能引用同env:一块中的其他内容(可能来自 ConfigMap 或 Secret)以及来自其他服务的隐式变量。
(在 Kubernetes 级别更改路径类型变量没有多大意义。由于映像是独立的,因此它已经包含所需的所有命令和库。在 Kubernetes 中注入更多工具或库是很困难的;最好将它们直接安装在您的映像中,最好是安装在/usr/lib或中/usr/local/lib,但如果失败,您可以ENV在 Dockerfile 中进行更新,类似于您在此处的建议。)
| 归档时间: |
|
| 查看次数: |
2568 次 |
| 最近记录: |