概要
kube-awsでAWS上にKubernetes環境を構築しているが、ある日突然、kube-aws validate
の実行が失敗するようになった。
CloudFormationのValidationが強化されたことが原因のようだが、幸いbug fixはされているため、v0.9.9にbug fixを取り込んでBuildする手順を記載する。
なお、本書はkube-aws v0.9.9のbug fix版がリリースされるまで、もしくはv0.9.10がリリースされるまで有効とする。
問題の発端
Kubernetesクラスターを構築しようとしたところ、kube-aws validate
に失敗。
$ kube-aws validate --s3-uri=s3://mybucket
Validating UserData and stack template...
Error: failed to validate node pool #0: create volume dry-run request failed: InvalidParameterCombination: The parameter iops is not supported for gp2 volumes.
status code: 400, request id: xxxxx
調べて見ると既知の問題らしい。
投稿者は1ヶ月くらい前から発生しているらしいが、私の環境では2週間くらい前には発生していなかった。
リージョンの違いだろうか。
対応手順が書いてあったため、手順を本書に記載する。
対応手順
kube-aws v0.9.9にbug fixと取り込んでbuildする。
- GOPATHを設定し、v0.9.9のkube-awsをcloneする(GOPATHは任意のディレクトリで問題ない)
$ export GOPATH=$HOME/go
$ git clone --branch v0.9.9 https://github.com/kubernetes-incubator/kube-aws.git $GOPATH/src/github.com/kubernetes-incubator/kube-aws
$ cd $HOME/go/src/github.com/kubernetes-incubator/kube-aws
- bug fixのコミットを取得する
$ git cherry-pick 5e15ac9059a95c051600c378cec204621c3a722f
- kube-awsをbuildする
$ make build
- buildで作成したバイナリを配置する(Macの場合)
$ cp bin/kube-aws /usr/local/bin
この対応の後、無事にkube-aws validate
を実行できた。
最後に
AWS側の変更により突然動かなくなるのはなかなかつらいところ。
今回は幸いbug fix版のコードを見つけることができたが、次回は見つからない可能性もある。
緊急時に手詰まりになることを避けるため、暫定対応として自分でbug fixしてbuildする手順は確立しておいた方がいいかもしれない。