我尝试在yaml文件中获取pod名称中的id作为环境变量:
job-05d93d91-d527-4b06-ad89-593f0350ecd6-jobmanager--1-qfjqf 1/1 Running 0 22m
job-05d93d91-d527-4b06-ad89-593f0350ecd6-taskmanager-66758j5h4d 1/1 Running 0 22m
job-05d93d91-d527-4b06-ad89-593f0350ecd6-taskmanager-66758vsj5q 1/1 Running 0 22m
字符串
我想有“66758vsj5q”和“66758j5h4d”和“qfjqf”作为一个环境变量。
我可以通过暴露来获取pod名称:
envVars:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
型
但是来自Expose Pod Information to Containers Through Environment Variables的POD_NAME返回整个pod名称。我实际上使用的是ververica平台,并遵循此文档。
有可能做到吗?
1条答案
按热度按时间olqngx591#
以下是您可以使用
valueFrom
获得的支持内容。valueFrom:环境变量值的来源。如果value不为空,则无法使用。
EnvVarSource表示EnvVar的值的源。
获取MapKeyRef(object)
重新配置ConfigMap的键。
fieldRef(对象)
pod的一个字段:支持metadata.name、metadata.namespace、metadata.labels、metadata.annotations、spec.nodeName、spec.serviceAccountName、status.hostIP、status. podIP。
resourceFieldRef(object)
调用容器的资源:目前只支持资源限制和请求(limits.cpu、limits.memory、limits.ephemeral-storage、requests.cpu、requests.memory和requests.ephemeral-storage)。
secretKeyRef(object)
在pod的命名空间中创建一个secret的密钥
所以你尝试的方式,它不起作用。
从
metadata.name
获取的字符串实际上已经作为名为HOSTNAME
的环境变量公开。知道这些名字的模式,name-hash 你可以使用shell或任何其他工具来获取最后一部分。例如,通过参数扩展或通过连字符分割。这取决于你想要使用哪个上下文。
个字符