Kubernetes
將 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>'
我的問題在哪裡,我該如何解決?
Kubernetes的簡單 pod 範例 YAML顯示所需的“元數據”和“規範”元素位於定義的頂層。該
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
元素已更正為 valuePod
。2) pod 的名稱已更改以適合 Kubernetes 要求(類似 DNS 的小寫名稱)。3)image
和name
元素已被修改以使用bash
圖像。4) 命令定義已更改為使用command
andargs
鍵。請注意,YAML 使用空格而不是製表符進行縮進,YAML 的建議語法是每級縮進使用兩個空格,而不是傳統的四個空格。
有關更多範例 YAML 文件,請參閱GitHub 上的 Kubernetes 網站儲存庫。