【发布时间】:2022-04-14 15:19:14
【问题描述】:
我正在尝试使用向下 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
我错过了什么?
更新:
很明显,我的缩进搞砸了,感谢您指出这一点,但我的问题的主要部分仍然不清楚。如何从容器中获取部署名称?
【问题讨论】:
-
用更多信息更新了我的答案
-
@fiunchinho 好的,谢谢,我会再开放一段时间,看看是否有人知道机制,如果没有,我会接受你的回答。您是否知道生成的 pod 名称是否总是恰好有两个带有数字作为 id 的破折号(例如“test-deploy-6bb8fb7f86-9whq4”)?如果是这样,我可以轻松地从 pod 名称中提取部署名称,这不是我更喜欢的方式,但它可以解决问题。
-
是的,它始终是相同的结构。格式为
deploymentName-replicaSetName-randomAlphanumericChars。 -
@fiunchinho 我刚刚遇到一个 pod 名称,最后只有一个连字符。它没有添加第二个,只是用几个数字扩展了副本集的 id。这是为什么呢?
-
可能没有 Deployment 对象,只是一个 ReplicaSet。而 pod 是由 ReplicaSet 创建的。你只得到 deploymentName 前缀是 ReplicaSet 是由 Deployment 创建的
标签: kubernetes