gpt4 book ai didi

docker - 如何避免在部署定义中重复GUID

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

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: app-2993d9d2-5cb4-4f4c-a9f3-ec630036f5d0
spec:
selector:
matchLabels:
client: 2993d9d2-5cb4-4f4c-a9f3-ec630036f5d0
template:
metadata:
labels:
client: 2993d9d2-5cb4-4f4c-a9f3-ec630036f5d0
spec:
containers:
- name: xxx
image: xxx
env:
- name: GUID
valueFrom:
fieldRef:
fieldPath: spec.template.metadata.labels.client

我尝试使用不同的表达式将现有值从定义传递到env变量,但所有这些都不起作用:
error converting fieldPath: field label not supported: spec.template.metadata.labels.client

upd:找到什么 you can pass in,没有帮助...

我必须将自己重复4次,是否有办法减少Pod定义中的重复次数以简化管理?根据 this,您可以传递一些内容,但不会说什么。

ps。我真的需要在spec.template和spec.selector中使用相同的GUID吗?没有它就行不通

最佳答案

您不一定需要在这里使用导航,这些只是标签和名称...
其次,它们指的是不同的事物(尽管在某些情况下其中某些必须相同):

  • 元数据名称是相关部署的名称。您将使用它在生命周期中引用和操纵此特定部署。
  • 如果希望它们匹配在一起,则
  • 标签和matchlabels必须相同,在这种情况下,您需要这样做。 Kubernetes在标记方面非常强大且非常灵活,不同的 Assets 可以在其上具有多个标签(例如pod可以具有以下标签:app:Postfix,tier:backend,layer:mysql,env:dev)。可以说,要匹配的标签和要匹配的标签必须相同才能匹配。

  • 至于在Deployment中自动贴标签以避免重复,也许Helm Charts或其他“自动化kubernetes”方法(取决于您的实际需求)会更好吗?

    附加说明:从kubernetes 1.9开始,可以使用以下标签将标签传递给env变量:
    ...
    template:
    metadata:
    labels:
    label_name: label-value
    ...
    env:
    - name: ENV_NAME
    valueFrom:
    fieldRef:
    fieldPath: metadata.labels['label_name']

    以下是完整的模拟代码来演示这一点(客户端1.9.3,服务器1.9.0):
    # cat d.yaml:

    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
    name: app-guidhere
    spec:
    selector:
    matchLabels:
    client: guidhere
    template:
    metadata:
    labels:
    client: guidhere
    spec:
    containers:
    - name: some-name
    image: nginx
    env:
    - name: GUIDENV
    valueFrom:
    fieldRef:
    fieldPath: metadata.labels['client']

    # after: kubectl create -f d.yaml and connecting to container
    # echo $GUIDENV responds with "guidhere"

    而且我已经尝试过并且可以正常工作(记住k8s版本)。

    关于docker - 如何避免在部署定义中重复GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50141777/

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