【问题标题】:Why should I have a dash in front of "value" in a K8s pod definition YAML?为什么我应该在 K8s pod 定义 YAML 中的“值”前面有一个破折号?
【发布时间】:2021-04-02 04:46:48
【问题描述】:

值键在“名称”列表下但前面没有破折号是什么意思? (我应该如何阅读和理解这个)

apiVersion: v1
kind: Pod
metadata:
  name: postgres
  labels:
    tier: db-tier
spec:
  containers:
    - name: postgres
      image: postgres
      env:
        - name: POSTGRES_PASSWORD
          value: mysecretpassword

这样做不会产生有效的 K8s YAML。这是为什么呢?

apiVersion: v1
kind: Pod
metadata:
  name: postgres
  labels:
    tier: db-tier
spec:
  containers:
    - name: postgres
      image: postgres
      env:
        - name: POSTGRES_PASSWORD
        - value: mysecretpassword

【问题讨论】:

    标签: kubernetes yaml kubernetes-pod


    【解决方案1】:

    pod 定义 YAML 文件的 env 部分接受键值对的 array

    破折号表示数组中的一个元素。

    我建议查看 YAML 规范:https://www.commonwl.org/user_guide/yaml/#arrays

    另外推荐绝对初学者的Kubernetes课程,非常棒:

    https://www.udemy.com/course/learn-kubernetes/

    【讨论】:

      【解决方案2】:

      如果我们认为您的建议与实际解决方案相反,那么 kubernetes 会处理您的格式

      env:
          - name: POSTGRES_PASSWORD
          - value: mysecretpassword
          - name: variable
          - value: answer
      

      作为:-

      env: [{name:POSTGRES_PASSWORD}, {value:mysecretpassword}, {name:variable}, {value:answer}]
      

      这样,K8s 将无法映射键值对的实际对象。

      所以在yaml中定义数组的实际格式,或者我们可以说在yaml中定义数组的语法如下。

      例如:-

      env:
          - name: POSTGRES_PASSWORD
            value: mysecretpassword
          - name: POSTGRES_USER
            value: root
      

      这将被视为:-

      env: [{name:POSTGRES_PASSWORD, value:mysecretpassword}, {name:POSTGRES_USER, value:root}]
      

      如需更多帮助,您可以访问so link 1so link 2

      【讨论】:

        猜你喜欢
        • 2018-11-20
        • 1970-01-01
        • 2023-03-18
        • 2011-04-03
        • 1970-01-01
        • 2021-12-09
        • 2011-01-27
        • 2014-03-05
        相关资源
        最近更新 更多