Google Container Engineでハマったところ
Google Container Engine (GKE)はKubernetesのクラスタを作り,Dockerコンテナを大量に上げるまで自動でやってくれたりするサービス. VMコンテナ自体はGCEと同様に管理できます. で,クラスタなんかもGoogle Cloud SDKのgcloudコマンドで色々と手元からCLIでできるのですが,ハマりました. ハマりポイント gcloud preview container kubectl create -f sample.json --cluster="<CLUSTER NAME>" これでsample.jsonにswagger形式で記述したクラスタが上がる……はずなのですが なぜか手元ではタイムアウト.次のようなメッセージが飛びます ERROR: F0326 10:43:53.728513 5117 get.go:166] Get https://130.211.179.83/api/v1beta1/pods?namespace=default: dial tcp 130.211.179.83:443: i/o timeout kubectl get podsなど,他のkubectlのコマンドも同様にタイムアウトしてハマってました. これは,一度作ったクラスタを削除して,また同じ名前でクラスタを作成した後の操作でした. 実はこれがハマったところのポイントで, $HOME/.config/gcloud/kubernetes/<PROJECT>.<ZONE>.<CLUSTER NAME>/ に配置されている,cluster.jsonに, { "endpoint": "130.211.179.83" } のような形式でgcloudコマンドを通してそのプロジェクトへkubectlをする時のエンドポイントのIPアドレスがキャッシュされてました. なので,以前同じ名前でクラスタを作って,gcloudコマンドを使った事がある場合,その前の時のIPアドレスをつかってkubectlを発行するため,タイムアウトしてしまうというオチでした. このcluster.jsonを削