我有以下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)image
和name
元素已被修改为使用bash
图像。 4) 命令定义已更改为使用command
和args
键。
请注意,YAML 使用空格而不是制表符进行缩进,并且建议的 YAML 语法是每级缩进使用两个空格,而不是传统的四个空格。
有关更多示例 YAML 文件,请参阅GitHub 上的 Kubernetes 网站存储库。