kubernetes - 将容器信息公开为环境变量
kubernetes - exposing container info as environment variables
我试图将一些容器信息公开为环境变量,从 pod 的 spec.template.spec.containers[0].name 中读取值,这似乎不起作用。在部署 template.The 部署模板中引用容器字段的 apiSpec 是什么,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
replicas: 2
selector:
matchLabels:
run: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 8000
resources: {}
env:
- name: MY_CONTAINER_NAME
valueFrom:
fieldRef:
fieldPath: spec.template.spec.containers[0].name
两件事:首先,容器名称是固定的——它由 PodSpec 模板定义——你可能在想 docker 容器的名称(它将是一个由命名空间、容器名称、pod UID 和重启计数组成的长生成名称)?因为 docker 容器的名称肯定不会出现在 .spec.containers[0].name
中
其次,虽然我同意 David 的观点,但我怀疑 kubernetes 会让你 运行 任意 fieldPath:
选择器,如果你愿意灵活地使用你的 command:
你实际上可以在启动时使用 Pod 自己的 ServiceAccount
查询 kubernetes API 以检索 Pod 信息的 all,包括其可能具有的 status:
结构您需要的大量信息。
向下 API 使您能够将 pod 自己的元数据公开给进程
运行 在那个吊舱里。
目前,它允许您将以下信息传递给您的容器:
- pod 的名称
- pod 的 IP 地址
- pod 所属的命名空间
- pod 的节点名称是 运行 on
- pod 在
下 运行 的服务帐户名称
- 每个容器的 CPU 和内存请求
- 每个容器的 CPU 和内存限制
- 广告连播的标签
- 广告连播的注释
就是这样。如您所见,容器端口不在此列表中。
一般来说,通过向下 API 可用的元数据相当有限。如果您需要更多,您需要直接从 Kubernetes API 服务器获取它,您可以通过使用客户端库或使用大使容器来实现。
我试图将一些容器信息公开为环境变量,从 pod 的 spec.template.spec.containers[0].name 中读取值,这似乎不起作用。在部署 template.The 部署模板中引用容器字段的 apiSpec 是什么,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
replicas: 2
selector:
matchLabels:
run: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 8000
resources: {}
env:
- name: MY_CONTAINER_NAME
valueFrom:
fieldRef:
fieldPath: spec.template.spec.containers[0].name
两件事:首先,容器名称是固定的——它由 PodSpec 模板定义——你可能在想 docker 容器的名称(它将是一个由命名空间、容器名称、pod UID 和重启计数组成的长生成名称)?因为 docker 容器的名称肯定不会出现在 .spec.containers[0].name
其次,虽然我同意 David 的观点,但我怀疑 kubernetes 会让你 运行 任意 fieldPath:
选择器,如果你愿意灵活地使用你的 command:
你实际上可以在启动时使用 Pod 自己的 ServiceAccount
查询 kubernetes API 以检索 Pod 信息的 all,包括其可能具有的 status:
结构您需要的大量信息。
向下 API 使您能够将 pod 自己的元数据公开给进程 运行 在那个吊舱里。
目前,它允许您将以下信息传递给您的容器:
- pod 的名称
- pod 的 IP 地址
- pod 所属的命名空间
- pod 的节点名称是 运行 on
- pod 在 下 运行 的服务帐户名称
- 每个容器的 CPU 和内存请求
- 每个容器的 CPU 和内存限制
- 广告连播的标签
- 广告连播的注释
就是这样。如您所见,容器端口不在此列表中。
一般来说,通过向下 API 可用的元数据相当有限。如果您需要更多,您需要直接从 Kubernetes API 服务器获取它,您可以通过使用客户端库或使用大使容器来实现。