いつもの通りアプリケーションを apply しようとしたら見たことのないエラーが発生した
$ kubectl apply -k ./
こんなエラーが出た
panic: runtime error: index out of range [9] with length 9 [recovered]
panic: runtime error: index out of range [9] with length 9
goroutine 1 [running]:
k8s.io/kubernetes/vendor/gopkg.in/yaml%2ev3.handleErr(0xc0004e6d08)
/build/kubectl/parts/kubectl/go/src/github.com/kubernetes/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/gopkg.in/yaml.v3/yaml.go:276 +0x8d
panic(0x1d930a0, 0xc0034bd2c0)
/snap/go/7360/src/runtime/panic.go:965 +0x1b9
k8s.io/kubernetes/vendor/gopkg.in/yaml%2ev3.write(0xc0025ee380, 0xc003549e30, 0x9, 0x10, 0xc0004e4a80, 0xc0004e4a01)
/build/kubectl/parts/kubectl/go/src/github.com/kubernetes/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/gopkg.in/yaml.v3/emitterc.go:90 +0x245
k8s.io/kubernetes/vendor/gopkg.in/yaml%2ev3.yaml_emitter_write_comment(0xc0025ee380, 0xc003549e30, 0x9, 0x10, 0x18)
中略~
/kubernetes/vendor/github.com/spf13/cobra/command.go:958 +0x375
k8s.io/kubernetes/vendor/github.com/spf13/cobra.(*Command).Execute(...)
/build/kubectl/parts/kubectl/go/src/github.com/kubernetes/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/github.com/spf13/cobra/command.go:895
main.main()
_output/local/go/src/k8s.io/kubernetes/cmd/kubectl/kubectl.go:49 +0x21d
panic ??
僕がパニックです。
まずはバージョン確認
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0",...
フムフム。
自分の記憶では、以前確認して覚えているのは「1.19」だったはず。。。
■公式ドキュメント
https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/
$ mkdir ~/kubectl-1.19
$ cd ~/kubectl-1.19
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/linux/amd64/kubectl
落としてきた場所のkubectlを指定して試してみる
バージョンで確認
$ ~/kubectl-1.19/kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", ...
ディレクトリ移動して
$ ~/kubectl-1.19/kubectl apply -k ./
エラーなし。applyできた。
調べてみると、
kubectl 1.21.0 から built-in kustomize のバージョンが「4.0.5」になっていた。
原因は、manifestファイルのyamlのコメントアウト部分に「multi-byte(日本語)のコメント」が入っていると、panicを起こすという事らしい。
幸いなことに、複数の namespace で、同じコメントが多数散らばっていたので、VSCode の全文検索で英語に置き換えまくって、再度apply。
無事applyできるようになりました。
NAME READY STATUS RESTARTS AGE
zozo-monitor-cronjob-1618821900-zqckf 0/1 Completed 0 2m39s
zozo-monitor-cronjob-1618821960-d46t6 0/1 Completed 0 106s
zozo-monitor-cronjob-1618822020-gfw5h 0/1 Completed 0 42s
zozo-monitor-deployment-8547566c5c-hb8x9 2/2 Running 0 3m52s
学び
解りがよかろうと日本語で細かくコメントを書いていたことが災いした。
コメントも英語で書くことにします。