このエントリはKubernetesアドベントカレンダー2014の23日目です。
Sensuのアドベントカレンダーよりも埋まっていることに気を良くしたのでもう少し書きます。
Kubernetesを動かした時によくハマると思われる(私がハマった)ポイントです。
Minionが get minions
に表示されない
get minions
してもMinionが一覧表示されない場合は、 kube-controller-manager
の起動オプションでの -machines
がうまくいっていないかもしれません。確認してみてください。
kube-controller-manager \
-machines='172.16.2.1,172.16.2.2,172.16.2.3' \
-master='172.16.1.1:8080' \
-v=3 >/tmp/kube-controller-manager.log 2>&1 &
Podをcreateしても、所定のMinionでコンテナが起動しない
get minions
したらminionは登録されている- でもMinion側でコンテナが起動しない(ずーーーっとPending)
という状況になった場合の対処です
もしかしたら必要なイメージを docker pull
している最中かもしれない
docker images -a
を見るとどんどん変化していたりしないでしょうか?
もしかしたら手元にないイメージを docker pull
している最中かもしれません。
もしそうであれば…ひたすら待ちましょう。
なおv0.5.2で 手元にないイメージをpullしなくなる というバグがあったので、その場合はv0.5.3を使ってください。
kubeletのログに怪しい出力
もしdockerと通信できていなそうだったら kubelet
の起動オプションの -docker_endpoint
を確認してみてください。
私は unix:///var/run/docker.sock
で待ち受けしていて、ここが変更が必要になったことはないです。
うまく動いてなさそうであれば、 curl
や socat
でdockerをつついてみましょう。
それでも大丈夫そうであれば、 kubelet
の起動オプションの -hostname_override
を確認してみてください。
kube-controller-manager
の -machines
のホスト名と、 kubelet
のホスト名(デフォルトは uname -n
で言うところのホスト名)が一致しないと、 kubelet
は自分に指示されてると理解できず動作しません。 -hostname_override
で揃えてください。
( -machines
のほうを揃えてもいいかもしれません)
なおGCP関連のエラーログが結構出たりしますが、今のところ無視していました。
※単に深く追っかけていないだけ
guestbook exampleがうまく動かない
guestbook exampleはよくできているような、そうでもないような感じです。
最初快調に動いていたのに突然動かなくなった
今のところ、AngularJS側のコードの書き方のせいで、同じ値を複数回投稿するとうまく動かなくなるようです。 テストするときには必ず今までと違う値を投入してください(悲しみ)
データがたまに書き込めない
Minionが複数ある場合、Pod間ネットワーク疎通がうまく制御できていないと、frontendとredis-masterとが同じホストにたまたま同居しているものにあたった場合にだけデータが書き込めるような挙動になります。 Pod間できちんと疎通できているかよく確認してください。
Pod間疎通を確認するにはまず ps
、 docker ps
コマンドなどでプロセス・コンテナ状況を確認するのと、
他にはふつうにdockerのコンテナを起動して確認してしまうのがよいです。
例えば以下のようにすることで動作や疎通を確認できます。
docker run --rm -it dockerfile/redis redis-cli -h -p
他にも「こんなことハマったよ!」とかあれば教えてください。
この手のネタではないですが、私はetcdやflannelの思想やクラスタとしての動きがよくわからず結構時間を使っちゃいました。
あとは書いてる途中で Rocket
や docker machine/swarm/compose
が出てきてだいぶ心を乱されました。
変化が速いですね〜。。。
今からKubernetes触るならv0.7.2を待つのもいいかもしれません。
v0.7.0で Fixes #2681: update to cadvisor 0.6.2
が入ってますのでクラスタ管理周りがまた面白くなっていそうです。
ご活用ください。
See also