AWS
kubernetes
kube-aws

kube-aws v0.9.9が突然動かなくなって焦った件

概要

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する手順は確立しておいた方がいいかもしれない。