@lestrrat 氏に Kubernetes を教えてもらいました

@ymmt2005 こと山本です。SRE とかやってます。

サイボウズでは「Neco」という、クラウド基盤のアーキテクチャを刷新するプロジェクトを進めているのですが、今回は @lestrrat こと牧大輔さんをお招きして Kubernetes の導入を検討しはじめた話です。

当日の牧さんの資料は以下で公開されています。

現状のシステム

サイボウズのクラウド基盤は 1,000 台規模の物理サーバーと数千台の仮想マシンの上で動作する数々のサービス群で構成されています。どのサービスをどのサーバー・VM で動作させるかは現状人手による暖かみのある管理方式で、規模の増大に伴い工数も増えています。

多数の物理サーバーを保有しているので遊休リソースも相当あります。画像変換処理などで遊休リソースを有効活用する Kodama という仕組みも自製しているのですが、Kodama に遊休リソースを割り当てるのは人手になっており、自動化しきれていません。

アプリケーションのデプロイに関しても、Docker 等のコンテナ技術を採用できておらずバージョンアップ作業などで一々人手による設計・実装作業が必要な状況です。

Neco でやりたいこと

次期アーキテクチャで目指す理想はこんなところです:

  • CPU やメモリといったリソースの空き状況を見て自動的に適切なサーバーを選択
  • サーバー故障時や退役時の自動的なサービス再配置
  • 配置されたサービスの発見方法(サービスディスカバリ)を提供
  • アプリケーションはコンテナとしてデプロイ

Kubernetes とは

Dockerrkt の登場で近年 Linux のアプリケーションのデプロイは急速にコンテナ化が進んでいます。

ただ、素のコンテナエンジンではデータセンターで運用するうえで必須となる冗長化やサービスディスカバリの機能がないため、開発環境はともかく、大規模な運用に必要なパーツに欠けている状況でした。と、いうのは一昔前の話です。

現在はコンテナを大規模な分散環境で自動的に管理するミドルウェアの開発が活発に行われています。代表的なものは以下です。

Kubernetes は元々は Google が開発していたものをオープンソース化したもので、その経緯から特に GCP では容易に利用できるようになっています。

勉強会の内容

社内で声をかけたところ、牧さん直々の勉強会ということで 10 名以上参加して実施しました。 勉強会の参加者は、一通り以下のチュートリアルをこなして参加しました。

牧さんの資料をもとに、builderscon のサイトを実際に k8s でどのように管理しているかや、以下のような便利ツールを教えてもらいました。

記念写真 f:id:cybozuinsideout:20170316134134j:plain

今後の予定

もくろみ通り、k8s 熱が社内で盛り上がっている状況です。当社のようなオンプレミス環境での構築はそこそこ大変そうですが、まず開発用データセンターに構築してノウハウを貯めていきます。

知見がたまりましたらまたブログで公開していきますので、応援よろしくお願いします。

お忙しい中勉強会を引き受けてくださった牧さん、ありがとうございました!