在安排Pod时,我通过Kubernetes DevicePlugins动态(透明地)将一些共享库文件夹安装到客户端容器中。现在,在容器中,我想将这些动态安装的共享库附加/扩展到LD_LIBRARY_PATH环境变量。
在容器内部:这可以通过在bash上运行命令来实现 “导出LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/ some / new / directory”
从主机:我可以将导出命令添加到pod.spec.command和args下的pod.yaml文件中。
但是,我想透明地做到这一点,而无需客户端/管理员使用Kubernetes DevicePlugins或Extended-Schedulers在yaml文件中指定它
我正在寻找方法/技巧,仅使用Kubernetes源代码就可以在容器内附加/扩展LD_LIBRARY_PATH。
谢谢。
答案 0 :(得分:1)
您可以烘烤到Dockerfile中并创建一个映像,供您在Kubernetes中使用。无需破解Kubernetes源代码。
在Dockerfile中的某些行中:
ENV LD_LIBRARY_PATH /extra/path:$LD_LIBRARY_PATH
然后:
docker build -t <your-image-tag> .
docker push <your-image-tag>
然后,更新您的pod或部署定义并部署到Kubernetes。
希望有帮助。
答案 1 :(得分:0)
如果我了解您的问题,您需要做的就是按计划将ld_library_path透明地添加到pod中。也许您可以尝试使用mutatingadmission webhook。它允许您将补丁命令发送到kubernetes来修改清单。 banzai云提供了很好的文档。我自己还没有尝试过。 https://banzaicloud.com/blog/k8s-admission-webhooks/