kubernetes pod动态命令行
kubernetes pod dynamic command line
我有一个第 3 方 docker 容器,它采用以下形式的参数:
docker run foo --arg1 val1 --arg2 val2
我运行它作为kubernetes中的一个pod如下:
spec:
containers:
- name: foo
image: foo
args:
- --arg1
- val1
- --arg2
- val2
这很好,但我现在需要使两个参数值动态化。例如,val1 是 Pod 的 name/id,val2 是 Pod 所在节点的 zone(aws 可用区)运行ning。
我能想到的唯一解决方案是扩展容器,创建另一个图像,该图像 运行 是一个包装器脚本,它查询这两个值,然后将它们传递给命令行。
我想知道是否有比这更优雅的解决方案。假设我们可以在 initContainer 中 获取 这些动态值。现在的问题是我们如何在主容器的命令行上传递它们。
PS:看来我们可以使用向下API获取pod的名称。然而,向下 API 不暴露节点的标签,其中有一个开放的 issue。所以,对于这道题,假设我们的参数是任意的,是动态获取的。
您将能够如下所述传递参数。
HOSTNAME env 将为 POD_NAME
提供详细信息
AWS 区域特定详细信息。
或
运行 kubectl 命令初始化并使用带有 --show-labels 的节点标签以根据分配的 pod 节点获取特定于区域的详细信息。
我有一个第 3 方 docker 容器,它采用以下形式的参数:
docker run foo --arg1 val1 --arg2 val2
我运行它作为kubernetes中的一个pod如下:
spec:
containers:
- name: foo
image: foo
args:
- --arg1
- val1
- --arg2
- val2
这很好,但我现在需要使两个参数值动态化。例如,val1 是 Pod 的 name/id,val2 是 Pod 所在节点的 zone(aws 可用区)运行ning。
我能想到的唯一解决方案是扩展容器,创建另一个图像,该图像 运行 是一个包装器脚本,它查询这两个值,然后将它们传递给命令行。
我想知道是否有比这更优雅的解决方案。假设我们可以在 initContainer 中 获取 这些动态值。现在的问题是我们如何在主容器的命令行上传递它们。
PS:看来我们可以使用向下API获取pod的名称。然而,向下 API 不暴露节点的标签,其中有一个开放的 issue。所以,对于这道题,假设我们的参数是任意的,是动态获取的。
您将能够如下所述传递参数。
HOSTNAME env 将为 POD_NAME
提供详细信息AWS 区域特定详细信息。
或
运行 kubectl 命令初始化并使用带有 --show-labels 的节点标签以根据分配的 pod 节点获取特定于区域的详细信息。