gpt4 book ai didi

kubernetes - 如何从容器中获取部署名称?

转载 作者:行者123 更新时间:2023-12-02 11:50:53 25 4
gpt4 key购买 nike

我正在尝试使用向下 API 将部署名称设置为环境变量,但我的容器在没有任何日志记录的情况下不断崩溃。我正在使用busybox 来打印环境变量。我使用 Pod 取得了成功,但部署失败了:这是我的 YAML:

--- 
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test-d
name: test-deploy
spec:
replicas: 1
selector:
matchLabels:
app: test-d
template:
metadata:
labels:
app: test-d
spec:
command:
- sh
- "-c"
- "echo Hello Kubernetes, I am $MY_DEPLOY_NAME in $MY_CLUSTER_NAME and $MY_NAMESPACE! && sleep 3600"
containers:
-
image: busybox
name: test-d-container
env:
-
name: MY_DEPLOY_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
-
name: MY_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
-
name: MY_CLUSTER_NAME
value: production

我错过了什么?

更新:

很明显,我的缩进搞砸了,感谢您指出这一点,但我的问题的主要部分对我来说仍然不清楚。如何从容器中获取部署名称?

最佳答案

您为部署对象使用了错误的缩进和结构。
command键和 env键是 container 的一部分 key 。

这是正确的格式

--- 
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test-d
name: test-deploy
spec:
replicas: 1
selector:
matchLabels:
app: test-d
template:
metadata:
labels:
app: test-d
spec:
containers:
- image: busybox
name: test-d-container
command:
- sh
- "-c"
- "echo Hello Kubernetes, I am $MY_DEPLOY_NAME in $MY_CLUSTER_NAME and $MY_NAMESPACE! && sleep 3600"
env:
-
name: MY_DEPLOY_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
-
name: MY_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
-
name: MY_CLUSTER_NAME
value: production

请记住,您可以使用 this online validator 验证您的 Kubernetes list 。 ,或本地 using kubeval .

引用问题的主要部分, you can get the object that created the Pod ,但最有可能的是 ReplicaSet,而不是 Deployment。

Pod 名称通常是由 Kubernetes 生成的,你事先并不知道,所以有一种机制来获取名称。但部署不是这种情况:您在创建部署时就知道部署的名称。我认为没有一种机制可以动态获取部署名称。

通常,在 Deployment 对象的 PodSpec 中使用标签来添加元数据。

您也可以尝试解析它,因为 pod 名称(您拥有的)始终具有以下格式:deploymentName-replicaSetName-randomAlphanumericChars。

关于kubernetes - 如何从容器中获取部署名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com