如何在Kubernetes中扩展容器的环境变量

时间:2017-07-14 00:14:30

标签: kubernetes

关于设置容器的环境变量的

Kubernetes documentation仅包括新环境变量的示例。

当我尝试扩展现有的环境变量PATH时,这种方法不起作用:

kind: Pod
apiVersion: v1
spec:
  containers:
    - name: blah
      image: blah
      env:
        - name: PATH
          value: "$PATH:/usr/local/nvidia/bin"

创建的pod随着

而崩溃
BackOff       Back-off restarting failed container
FailedSync    Error syncing pod

关于如何扩展PATH环境变量的任何建议?

3 个答案:

答案 0 :(得分:2)

如果您只需要运行该命令的此路径声明,则可以将其添加到containers

下的args部分

示例:

spec:
  containers:
  - name: blah
    image: blah
    args:
    - PATH="$PATH:/usr/local/nvidia/bin" blah

如果你的yaml中没有指定args,你可能在Dockerfile中指定了一个CMD,它将自动运行你的容器。因此,您可以将以下内容添加到Dockerfile中。

CMD ["PATH=$PATH:/usr/local/nvidia/bin", "blah"]

如果您希望将其放在容器中,则必须在您正在使用的容器中添加用户的.profile或.bashrc文件。这可能涉及创建一个新图像,其中包含这些新文件。

答案 1 :(得分:1)

如果您希望环境变量PATH可以为容器启动程序使用附加目录进行更新,甚至当您希望使用kubectl exec进入容器时,也可以像下面这样更新清单命令参数

<net.opacapp.multilinecollapsingtoolbar.CollapsingToolbarLayout
            android:id="@+id/collapseToolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:expandedTitleMarginStart="20dp"
            app:collapsedTitleTextAppearance="@style/AppTheme.Toolbar.Title"
            app:expandedTitleTextAppearance="@style/AppTheme.Toolbar.Title"
            app:maxLines="3"
            app:title="Example Title"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

然后您可以确保将二进制文件放入$ HOME / bin或$ HOME / local / bin目录中。如果您进入bash环境并进行检查,应该可以看到$ HOME / bin或$ HOME / local / bin目录现在是PATH环境变量的一部分

答案 2 :(得分:0)

在pod启动之前,最终的环境变量是未知的,因此Kubernetes不能附加值不可预测的字符串。

实际上,docker会重置环境变量,并最终添加自己的变量。

您可以做的是修改您的入口点,以便您可以处理准备执行的环境。

我有featured bash-only entrypoint here