Solution Architect達に聞いたGKEのベストプラクティス @ Google Cloud Next ’17 in Tokyo


kubernetesのマネージド・サービスであるGKE,自分も利用していますが、まだまだ情報が少なくベストプラクティスが見つかっていない状態でした。
今回、Cloud Nextのイベント会場内にあった ask the expert というブースで、ソリューションアーキテクトたちに質問し放題という素晴らしい場所があったのでたくさん質問してきました。
あと、講演者のイアンともちょっと話すことができたので、そのあたりの話を簡単にまとめておきます。

ロギング・モニタリング

Q.「fluentdのコンテナをside carとして使う方法もあるけど、それだとバッファがはける前にコンテナが死んでしまったときのことが不安。ログの分類などができませんが、stdoutしかないでしょうか?」

A.「stdoutしてstackdriverに全て流すのがベスト。stackdriver上でフィルタリングをすれば、ログを細かくみることは可能。我々のcustomerの多くはそのように対応している。」

Q.「でもstackdriverだとpod単位までリソースのモニタリングができませんよね。」

A.「prometheusがおすすめ。prometheusの監視コンテナを各podに入れて、別の場所にあるmasterのコンテナに対して全て情報を送り、そのmasterのログをstackdriverに連携してやればいい」

Q.「複数リージョンにまたがるクラスタのモニタリングを一括で行うには?」

A.「prometheusだね!」

prometheusの細かい仕様がわからずこれ以上は突っ込めなかったですが、基本は全部stackdriverに流す想定らしいです。なるほど。

デプロイ

Q.「blue greenデプロイメントだと、一気に新しいバージョンに置き換わってしまうので不安。とはいえ、rolling updateだと立ち上がったpodの準備が整う前に他のpodが殺されてしまう可能性があり、結果として利用可能なpodの総数が減る恐れがあるのでは。」

A.「liveness probe, readiness probe, strategy, max serge, max unavailableを使えば、podの数を減らさず、完全にrunningになってから入れ替えができる。」

説明としては、

  • podが完全に立ち上がるのを待つ(例えばnginxがちゃんとレスポンスを返せるまで)ためにreadiness probeを利用する。
  • max unavailableを0にすれば、今あるpodを殺すことなく新しいpodを作成する。
  • max sergeで、一度にどれだけのpodを作成するかコントロールできる。

これらを組み合わせれば、今あるpodを減らさず、完全に立ち上がって準備ができた新しいpod(s)を古いpod(s)と入れ替えることができる、ということでした。
よさそう!

オートスケーリング

Q.「cluster autoscalerはすごい機能だけど、trafficが急増したときにVMの増台が間に合わないのでは?」

A.「その懸念や改善要望はけっこうある。CPU使用率を低めにしてもコストがかさむばかりで効果は望めない。次のようなworkerを作るとよい」

根本的には手動でscaleしておくしかないということで、それをどうやるかというと、

  1. prometheusで対象となるリソースを監視(メモリ使用率、open TCP connection, etc)
  2. 監視項目が上振れたのを検知して、kubectl scaleを発行
  3. sleep 10, 1に戻る
    という感じでした。あとはバーストが見込まれる時間を指定してscaleを手動で行っておくとかも効果的、とのこと。
    CPU使用率に代わるメトリクスは今後開発予定だよ!と言っていたので、それでナイスにscaleしてくれることを願いたい。

ポッド

Q.「結局1podに複数コンテナを詰め込むべきなんですかね?ばらした方がよいですか?」

A.「状況による。もちろんばらした方がそれぞれscaleできるという最適化の観点や立ち上がり時間の観点ではメリットがあるが、複数を1つにまとめておけば同じvolumeをシェアすることもできる。使いどころだよ。」

この It depends. 的なことを皆さんに言われて、まぁそうですよね。
自分はエンジニアとしては能力が決して高くないですが、最低限の英語とエンジニアリングでもこういう形で活かせる良さがあるなーと思いました。粛々と頑張ろう。

シェアする

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

フォローする