Opensourcetechブログ

OpensourcetechによるNGINX/Kubernetes/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

kubernetes YAML記載方法に関するエラーメッセージ

 

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

f:id:opensourcetech:20190915165341p:plain

 

 

 

kubernetesでYAMLからデプロイするときのエラーメッセージに関するメモです。

特に、初めてYAMLを書いてデプロイする場合に遭遇することが多そうです。

 

 

エラーメッセージ1

「error: error parsing test1.yaml: error converting YAML to JSON: yaml: line 3: found character that cannot start any token」

行先頭のスペースが1個多く、YAMLが解釈できないってことを言ってます。

Nantecotta:~ Pannacotta$ vi test1.yaml
Nantecotta:~ Pannacotta$ cat test1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
   app: nginx
spec:
  replicas: 3
  selector:
   matchLabels:
    app: nginx
  template:
   metadata:
    labels:
     app: nginx
   spec: ・・・・・・エラー原因はこの行の先頭にスペースが1個多い!
    containers:
    - name: nginx
     image: nginx:1.17.3
     ports:
     - containerPort:80
Nantecotta:~ Pannacotta$ kubectl apply -f test1.yaml
error: error parsing test1.yaml: error converting YAML to JSON: yaml: line 3: found character that cannot start any token

 

 

エラーメッセージ2

「error: error validating "test1.yaml": error validating data: ValidationError(Deployment.spec): unknown field "spce" in io.k8s.api.apps.v1.DeploymentSpec; if you choose to ignore these errors, turn validation off with --validate=false」

この場合、「spec」と書くべきところを「spce」と間違ってます。

いわゆる、typoってやつですね。

Nantecotta:~ Pannacotta$ vi test1.yaml
Nantecotta:~ Pannacotta$ cat test1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
   app: nginx
spec:
  replicas: 3
  selector:
   matchLabels:
    app: nginx
  template:
   metadata:
    labels:
     app: nginx
  spce:・・・・原因はここのtypo
   containers:
    - name: nginx
     image: nginx:1.17.3
     ports:
     - containerPort: 80
Nantecotta:~ Pannacotta$ kubectl apply -f test1.yaml
error: error validating "test1.yaml": error validating data: ValidationError(Deployment.spec): unknown field "spce" in io.k8s.api.apps.v1.DeploymentSpec; if you choose to ignore these errors, turn validation off with --validate=false

 

 

正常時

エラーを修正したら、以下のようにデプロイできます。

使用したYAMLファイルは、こちらに一応置きました。

https://github.com/kujiraitakahiro/kubernetes/blob/master/test1.yaml

Nantecotta:~ Pannacotta$ vi test1.yaml
Nantecotta:~ Pannacotta$ cat test1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
  app: nginx
 spec:
   replicas: 3
   selector:
    matchLabels:
     app: nginx
  template:
   metadata:
    labels:
     app: nginx
   spec:
    containers:
     - name: nginx
     image: nginx:1.17.3
     ports:
      - containerPort: 80
Nantecotta:~ Pannacotta$ kubectl apply -f test1.yaml
deployment.apps/nginx-deployment created
Nantecotta:~ Pannacotta$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 10s
Nantecotta:~ Pannacotta$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-778d6ddb68-4kpkw 1/1 ErrImagePull 0 14s
nginx-deployment-778d6ddb68-6mvxh 1/1 ErrImagePull 0 14s
nginx-deployment-778d6ddb68-jl68d 1/1 ErrImagePull 0 14s

 

 

 

おまけ

ちなみに指定するnginxのバージョンが現存しないものであった場合、以下のようになります。

Nantecotta:~ Pannacotta$ kubectl apply -f test1.yaml
deployment.apps/nginx-deployment created
Nantecotta:~ Pannacotta$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 3 0 10s・・・使用可能なものがない!
Nantecotta:~ Pannacotta$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-778d6ddb68-4kpkw 0/1 ErrImagePull 0 14s・・・使用可能なものがない!
nginx-deployment-778d6ddb68-6mvxh 0/1 ErrImagePull 0 14s・・・使用可能なものがない!
nginx-deployment-778d6ddb68-jl68d 0/1 ErrImagePull 0 14s・・・使用可能なものがない!

 

ダッシュボードも以下のように、真っ赤です。

f:id:opensourcetech:20190915173145p:plain

 

 

 

アフィリエイトのアクセストレード

 

 

 

 

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

 

 

Opensourcetech by Takahiro Kujirai