2016-11-05 3 views
2

Kubectlコマンドは常にこのエラーを返します。yaml:2行目:このコンテキストではマッピング値は許可されません。たとえ私が普通のバージョンのコマンド、configコマンドなどを呼び出すときでも、これを引き起こしていることは分かりません。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ファイルは、このエラーを返すものは何でも、私はkubectlてみてください

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 

です。これを解決するにはどうすればよいですか?

> [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 

はversionコマンドがすでにロードされるいくつかのデフォルトのYAMLファイルがあることを示すエラーをスローするhere

+0

YAMLを修正する必要があります。タブ文字を使用していて、タブ文字を削除してから、正しいインデントを確認している可能性があります。あなたの記事のスクリーンショットをテキストで置き換えて(索引付けできるように)、YAMLファイルの関連する行を含めてください(最初から少なくとも3行目まで)。 – Anthon

+0

yamlファイルはどのように "kubectl version"コマンドに影響しますか – StarLord

+0

これらのURLを手で試しましたか?どちらが壊れたYAMLファイルのようなものを返しますか?壊れたファイルの内容はどういうものですか? – Anthon

答えて

4

です。

strace kubectl versionを使用すると、開いているファイルを確認できます。これは、kubectlがエラーをスローする直前に実行されていることを確認してください。私はそれが(またはあなたの現在のディレクトリ内のデフォルトのファイル)を読み取るいくつかのグローバル設定があると仮定します。

もちろん、このようなエラーをキャッチせずにファイルの名前を表示してから、エラーを再発させないようにkubernetesでプログラミングを行うのは間違いです。

+0

strace kubectlのバージョン – StarLord

+1

の出力を添付しました。エラーが消えてしまったら、ポート8080でgitlabを実行していました。私は本当にそれがどんなyamlファイルにも関係していたかどうか分かりません。あなたがstraceからurlを試すように言ったので、私はそれを解決することができました。 – StarLord

+0

@StarLord、@Anthon、ここでは、私はコンテナをバックグラウンドで実行していました - そして、 'strace kubectl version'コマンドで表示されるエラーは、実際には' console.log'ステートメントの最初の文字でした。ランニング。私はこの2つの事柄がどのように関連しているのか分かりませんが、コンテナを削除してから問題なく動いています。:) – AIon

1

kubectl versionを実行してもエラーが発生するため、デフォルトで~/.kube/configにあるkubeconfigファイルにyaml構文エラーがあります。

this oneのようなyamlバリデータを使用してコンテンツを検証できます。

+0

YAMLlintで設定ファイルをチェックしました。それは有効なYAMLでした。答えをありがとう。しかし、問題は私がまだ理解できない何か他のものでした – StarLord

関連する問題