2016-11-05 206 views
2

Kubectl命令一直返回此錯誤yaml:第2行:此上下文中不允許映射值。即使我調用普通版本命令,配置命令等,不知道是什麼造成這種情況。Kubectl總是返回一個錯誤:yaml:在此上下文中不允許映射值

[email protected]:~$ kubectl version 
Client Version: version.Info{Major:"1", Minor:"4", 
GitVersion:"v1.4.4", 
GitCommit:"3b417cc4ccd1b8f38ff9ec96bb50a81ca0ea9d56", 
GitTreeState:"clean", BuildDate:"2016-10-21T02:48:38Z", 
GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"} 
error: yaml: line 2: mapping values are not allowed in this context 


[email protected]:~/[some path]$ kubectl create -f kubernetes_configs/frontend.yaml 
error: yaml: line 2: mapping values are not allowed in this context 

我使用的唯一的yaml文件是

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: frontend 
    labels: 
    name: frontend 
spec: 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     name: frontend 
    spec: 
     containers: 
     - name: trigger 
     # Replace with your project ID or use `make template` 
     image: asia.gcr.io/trigger-backend/trigger-backend 

     # This setting makes nodes pull the docker image every time before 
     # starting the pod. This is useful when debugging, but should be turned 
     # off in production. 
     imagePullPolicy: Always 
     ports: 
     - containerPort: 8080 


apiVersion: v1 
kind: Service 
metadata: 
    name: frontend 
    labels: 
    name: frontend 
spec: 
    type: LoadBalancer 
    ports: 
    - port: 80 
    targetPort: 8080 
    selector: 
    name: frontend 

無論我嘗試用kubectl它返回此錯誤。我該怎麼做才能解決這個問題?

> [email protected]:~/developer/trigger-backend-dev/trigger-backend$ 
> kubectl get service error: yaml: line 2: mapping values are not 
> allowed in this context 

的輸出:

strace kubectl version 

here

+0

你應該改正你的YAML。您可能正在使用製表符,刪除這些字符,然後檢查正確的縮進。請用文本替換文章中的屏幕截圖(以便將其編入索引)幷包含YAML文件的相關行(從開頭到第3行)。 – Anthon

+0

yaml文件如何影響「kubectl版本」命令 – StarLord

+0

您是否嘗試過使用這些網址?哪一個看起來像一個破損的YAML文件?破碎文件的內容究竟是什麼? – Anthon

回答

4

該版本已經命令拋出錯誤表明有是被加載一些默認的YAML文件。

您可以使用strace kubectl version來查看打開了哪個文件,希望在kubectl之前發生該錯誤。我假設它有一些全局配置(或者是當前目錄中的默認文件)。

當然,在kubernetes中不要草率編寫這樣的錯誤,並顯示文件的名稱,然後重新提出錯誤。

+0

我附上strace kubectl版本 – StarLord

+1

的輸出,有一個gitlab在端口8080運行,一旦我停止它,錯誤消失了。我真的不知道這是如何與任何yaml文件相關的。但既然你告訴從strace嘗試網址,我能夠解決它。 – StarLord

+0

@ StarLord,@Anthon,同樣在這裏,我有一個容器在後臺運行 - 並且'strace kubectl version'命令顯示的錯誤實際上是容器打印的'console.log'語句的第一個字母運行。我不明白這2件事是如何相關的 - 但我刪除了容器,然後它沒有問題...... :) – AIon

1

由於即使在運行kubectl version時出現錯誤,我會說你的kubeconfig文件中有一個yaml語法錯誤,默認位於~/.kube/config

您可以使用yaml驗證程序驗證其內容,如this one

+0

我檢查了我的配置文件與YAMLlint。這是一個有效的YAML。感謝你的回答。但問題是我仍然無法理解的其他問題 – StarLord

相關問題