【发布时间】:2021-10-26 19:03:21
【问题描述】:
我有一个 kubernetes 集群,里面会运行一些 pod。对于每个 pod,我想分配一个唯一的 id 作为 env 变量。例如:pod 1 server_id=1,pod 2 server_id=2 等。 任何人都知道如何做到这一点。我正在构建我的 docker 映像并通过 gitlab ci 部署到集群。
【问题讨论】:
标签: kubernetes
我有一个 kubernetes 集群,里面会运行一些 pod。对于每个 pod,我想分配一个唯一的 id 作为 env 变量。例如:pod 1 server_id=1,pod 2 server_id=2 等。 任何人都知道如何做到这一点。我正在构建我的 docker 映像并通过 gitlab ci 部署到集群。
【问题讨论】:
标签: kubernetes
将 ENV 变量添加到 helm 或 YAML 模板中
如果您的部署不同,您可以将变量添加到 YAML 文件并根据需要应用它。
将变量值放入 POD 并使用它
否则,您可以获得彼此不同的部署的 POD 名称,如果您可以使用唯一的名称
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-fieldref
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
sleep 10;
done;
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: MY_POD_SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
restartPolicy: Never
如果您想设置自己的变量和值,您必须使用不同的部署。
如果您想管理序列,您需要使用有状态集。
排序类似
POD-1
POD-2
POD-3
作为环境变量,您只想要这个,您可以使用有状态设置 POD 名称并从节点获取值并注入回 POD 和应用程序进一步使用它。
【讨论】:
stateful sets
random POD name,您可以使用该 POD 名称作为变量。正如上面分享的 printenv 从节点或环境中获取数据。