俺 と Kubernetes
2016-03-14 クラウド合同セミナー in 金沢
ふぁらお加藤
ふぁらお加藤
@PharaohKJ
所属
• PhalanXware(Freelancer
• Kanazawa.rb
• JAWS-UG 金沢
経歴
• OCRシステム
• ISDB-Tアプリ・組み込み
• ソーシャルゲームサーバサイド
• eコマースサイトサーバサイド
• モバイル対応CRM・ERP
Kubernetesとは
• 現在 GitHub 上で開発が行われ
ている OSS
• Docker Container の オーケス
トレーションシステム
• クラスタを構成するノードを管
理し、コンテナ実行をユーザ定
義要件(CPU、メモリなど)に従
ってスケジューリングしてくれ
る
• label や pod と呼ばれる論理的
な単位で作成、管理、公開など
ができる
GKEとは
Google Cloud Platform による
Kubernetes の提供
(AWSさんにもあります!)
なぜ
オーケストレーションシステム
を用いるのか?
Dockerで得られたもの
• プログラマの望むOS、ミドルウェアを採用しやすい選択
の自由
• ミドルウェアを準備する、公開用ポートを決める、など
がDockerfileによりコード化されることによる再現性
(Infrastructure as Code)
• docker engineが動けば、OSの種類によらない、imageを
pullできればよいという可搬性
• そのほか docker run オプションを参照
これまでの運用例 - 1
• 割りと大きめのサーバを借りて、そのOSがサポートして
いるミドルウェアを用いる。
• ミドルウェアの切り替えや更新の難易度が高い。
• 高いがゆえ、プログラマーはそのOS、ミドルウェアに
依存した環境に縛られる。
• 秘伝の操作を防ぐため、手順書が膨大に必要になる。
• プログラマーとインフラ担当がケンカになる。
これまでの運用例 - 2
• 障害対応のためにも、複数のサーバを借りて、ロールを割り当
て、要求によって切り替えて管理する。
• 複数台に同じことやるの?やらないの?ていうかむしろ、や
ってはいけないの?ロールの管理が煩雑になる。
• 残念ながらお客さんつかなくて、スカスカだ。他のことに使
いたい・・・。使っていいの?これもロールの管理が煩雑に
なる。
• 複数台にわったけど、LBにIPふったのどれだっけ?このディ
スク使ってるのだれだっけ?リソースの管理が複雑になる。
これらの運用から得た知見
「サーバにロールをもたせたら負け」
じゃあ
「全部 docker run できるコンピュータ」
でいいじゃん
プログラマは
「こういう環境でこのコンテナ動かして欲しいし
、こういうルーティングして欲しいなあ」
とRESTで要求すればOK
「どっかのどっかーがどかんとやってくれる」
どっかのどっかーがどかんとやってくれる図
これで作ったもの
• たくさんのセンサー (= DataCenter) に
• たくさんの方法・プロトコルでアクセスして情報取得
• たくさんためて、活用する
• たくさんの依存を解決する
• http://dcworkshop.github.io をご参照ください
それでもつらかったこと
• docker build に外部依存があるのが解決できないとつら
い(依存ミドルウェア、パッケージのダウンロードなど)
。やっぱりReleaseすら担当者が作るべきか・・・。
• ログを上手に収集しないと「このコンテナのログはどこ
にいったら見られるのだ」と辿るのに手間がかかる
• 基本的には「コンテナは永続的に動くもの」を想定され
ており、細かいプロセスの開始・終了といったものは向
いてない(現時点で)。
ふぁらお加藤
ご清聴ありがとうございました

俺とKubernetes

Editor's Notes

  • #3 おととい、JAWS-DAYS に参加してきました。 写真は JAWS-DAYS 2015でLTしたときのものです。
  • #7 docker run オプションについてはぜんぶつさまの日本語訳もぜひ参照してください
  • #15 久森さんのデータセンターの写真にあったようなコンピュータをうまいこと管理する準備? IoT BigData AI など、今のはやりを全てが必要な感じ