Kubernetesを動かした時にハマったポイント

シェアする

  • このエントリーをはてなブックマークに追加

このエントリは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 で待ち受けしていて、ここが変更が必要になったことはないです。 うまく動いてなさそうであれば、 curlsocat で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間疎通を確認するにはまず psdocker ps コマンドなどでプロセス・コンテナ状況を確認するのと、 他にはふつうにdockerのコンテナを起動して確認してしまうのがよいです。

例えば以下のようにすることで動作や疎通を確認できます。

docker run --rm -it dockerfile/redis redis-cli -h <ServiceのIPアドレス> -p <Serviceのポート)

他にも「こんなことハマったよ!」とかあれば教えてください。 この手のネタではないですが、私はetcdやflannelの思想やクラスタとしての動きがよくわからず結構時間を使っちゃいました。

あとは書いてる途中で Rocketdocker machine/swarm/compose が出てきてだいぶ心を乱されました。 変化が速いですね〜。。。

今からKubernetes触るならv0.7.2を待つのもいいかもしれません。 v0.7.0で Fixes #2681: update to cadvisor 0.6.2 が入ってますのでクラスタ管理周りがまた面白くなっていそうです。

ご活用ください。

ads

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

ads