将 YAML 转换为 JSON 时出错:yaml:第 10 行:未找到预期的密钥

将 YAML 转换为 JSON 时出错:yaml:第 10 行:未找到预期的密钥

我有以下yaml文件:

---
apiVersion: v1
kind: pod
metadata:
    name: Tesing_for_Image_pull -----------> 1
    spec:
        containers:
        - name: mysql ------------------------> 2
          image: mysql ----------> 3
          imagePullPolicy: Always ------------->4
          command: ["echo", "SUCCESS"]  -------------------> 5

运行后kubectl create -f my_yaml.yaml我收到以下错误:

error: error converting YAML to JSON: yaml: line 10: did not find expected key

更新yamllint我收到以下错误:

root@debian:~# yamllint my_yaml.yaml
my_yaml.yaml
  8:9       error    wrong indentation: expected 12 but found 8  (indentation)
  11:41     error    syntax error: expected <block end>, but found '<scalar>'

我的问题出在哪里以及如何解决?

答案1

简单的 pod 示例 YAMLfor Kubernetes 显示所需的“元数​​据”和“规范”元素位于定义的顶层。该kubectl命令很可能会失败,因为它找不到定义 Pod 规范的“spec”元素。

您似乎正在测试图像拉取配置,并且您已指定只想echo SUCCESS在容器内运行。考虑到这两个条件,最好是下拉bash图像而不是图像mysql

以下替代 YAML 应该可以满足您的需求:

---
apiVersion: v1
kind: Pod
metadata:
  name: testing-for-image-pull
spec:
  containers:
  - name: bash
    image: bash
    imagePullPolicy: Always
    command: ["echo"]
    args: ["SUCCESS"]

对原始 YAML 文件进行了以下更改: 1) 该kind元素已更正为值Pod。 2) pod 的名称已更改以满足 Kubernetes 要求(类似 DNS 的小写名称)。 3)imagename元素已被修改为使用bash图像。 4) 命令定义已更改为使用commandargs键。

请注意,YAML 使用空格而不是制表符进行缩进,并且建议的 YAML 语法是每级缩进使用两个空格,而不是传统的四个空格。

有关更多示例 YAML 文件,请参阅GitHub 上的 Kubernetes 网站存储库

相关内容