为什么 K8s pod 定义 YAML 中的“值”前面应该有破折号?

问题描述 投票:0回答:3

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

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
3个回答
4
投票

如果我们认为您的建议与实际解决方案相反,那么 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 链接 1so 链接 2


0
投票

pod 定义 YAML 文件的

env
部分接受
array
键值对。

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

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

还推荐 Kubernetes 绝对初学者课程,非常棒:

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


0
投票

这里提供了一个很好的解释链接

(它用于 ansible 配置,但格式规则主要适用,因为它们都使用 yml 文件)

© www.soinside.com 2019 - 2024. All rights reserved.