Kubernetes

將 YAML 轉換為 JSON 時出錯:yaml:第 10 行:未找到預期的密鑰

  • December 14, 2019

我有以下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元素已更正為 value Pod。2) pod 的名稱已更改以適合 Kubernetes 要求(類似 DNS 的小寫名稱)。3)imagename元素已被修改以使用bash圖像。4) 命令定義已更改為使用commandandargs鍵。

請注意,YAML 使用空格而不是製表符進行縮進,YAML 的建議語法是每級縮進使用兩個空格,而不是傳統的四個空格。

有關更多範例 YAML 文件,請參閱GitHub 上的 Kubernetes 網站儲存庫

引用自:https://unix.stackexchange.com/questions/556090