<

【大阪・梅田】Kubernetes Meetup Tokyo 19 大阪サテライト- 2019年5月31日参加レポート

大阪から Kubernetes Meetup Tokyo に参加できるとのことで、こちらに参加してきました。 Kubernetes の生みの親である 3 人の内の 1 人の Joe Beda から、Kubernetes の歴史の経緯について教えて頂きました。 その話がとてもわかりやすく、なるほどなと思ったので、ぜひとも共有したいと思います。

https://k8sjp-osaka.connpass.com/event/131981/

※ 以降の内容は、私なりの解釈が入っており誤った認識かもしれません。ご了承下さい。 発表の内容は全て Youtube にありますので、そちらが正しいものです。ご参考下さい。

https://www.youtube.com/watch?v=ETHGx8_Q-1k

Who is Joe Beda ?

Joe Beda は、Kubernetes の co-founder(共同創設者/最初に開発した 3 人のうちの 1 人)/ 昨年 VMware に買収された Heptio の CTO / O'Reilly「Kubernetes: Up & Running」 (邦題「入門 Kubernetes」)の共著者で、現在も Kubernetes をリードしている 1 人です。今回は、Kubernetes のこれまでと未来についてお話いただきます。

https://k8sjp.connpass.com/event/126207/

Kubernetes の最初のコミッターで、超有名人。 Google で働いていたときは、Kubernetes や Compute Engine を作っていたそうです。

Joe さん曰く、プラットフォームで開発する上でおもしろいことは、下記2点のバランスだと仰っていました。

  1. ユーザーが簡単に使ってもらえる事
  2. 想定していなかった使われ方があった場合の柔軟性

私なりの解釈で言うと、例えば、GCP というプラットフォームの中で、GKE を使うとします。 ボタンをポチポチするだけでクラスターが作成されますよね。簡単で使ってみたくなります。

ただ、簡単だけだと細かい要求を満たせないので、オプションを設定できるようにしたり、 カスタマイズしやすいものへ改善されていきます。柔軟性ってことでしょうか? この柔軟性をしすぎると複雑になってしまい、ユーザーが使ってくれなくなる恐れがあります(マニアックなユーザーは残るかもしれないけど)。 そこのバランスが大切なのかなと思いました。

Joe さんの詳細な説明はこちらです。

The origins and future of Kubernetes (en/英語)

Joe さんは英語で話されてました。 CPCAmerica(?)の田中さんが通訳をされていたのですが、ものすごくわかりやすかったです。感謝です! あと、記憶力はんぱねぇ...。

https://twitter.com/mumoshu/status/1134438272518635521?s=20

※ 以下、@‏apstndb さんの要約 Tweet を参考にしました。神!!!

https://twitter.com/silverbirder/status/1134406467744804864?s=20

kubernetes の歴史

Borg の誕生

Google では、BigData を処理するためのMapReduceを開発していました。 MapReduce を扱うために、GlobalWorkQueue(GWQ)というものを開発され、これは主にバッチのために作成されたものでした。そこからバッチだけでなく、リアルタイムに実行したい(検索など)サービスに対応するために生まれたのが Borg だそうです。 Google のような大規模な検索であれば、数%の効率 Up でも大きなコスト削減につながるメリットがあります。 これが、Kubernetes の元となりました。

Kubernetes の誕生

Google で Borg を開発を進めていく中で、世の中は仮想マシンを扱うユーザーが多かったそうです。 Borg はプロプライエタリなソフトウェアだったため、Borg の世界を知ってほしい、開発者を引き込みたいという願いから、 OSS として Kubernetes が誕生しました。 また Kubernetes は、API ドリブンで開発者の生産性を上げるというのが先で、効率やセキュリティは後からついてきたそうです。

Kubernetes の魅力

Kubernetes とは、「コンテナオーケストレーター」と多くの人は知っていると思います。普及した大きなポイントですね。 他の観点で「1つのデータベースだけでクラスタを管理している設計」が魅力的だという話がありました。 (勝手な解釈かもしれません。すみません)

kubernetes overview
kubernetes overview

Kubernetes では、クラスタの状態を管理するために分散型 KVS であるetcdを使っています(その他の状態管理はキャッシュしているそうです。)。 etcd には、APIServer を経由しなければアクセスできないため、一貫したデータの維持が実現できます。 その etcd の周りにある、ビジネスロジックを実現するコントローラー(Scheduler, Controller Manager)が価値を提供します。 例えば、Pod を Node にアサインしたり、エンドポイントを提供したり、レプリケーションしたりなどなど...。

kubernetes の control plane である、APIServer, Scheduler, Controller Manager があれば、シングルノードでもマルチノードでも動きます。 kubernetes を DockerForMac で動かしたときは、そういえばシングルノードでしたね。マルチノードってイメージでしたけど。

kubernetes jazz Improv
kubernetes jazz Improv

Kubernetes はコンテナオーケストレーションとよく言われますが、事前にすべてがプランされたオーケストレーションではなく、ジャズのように即興で計画して組み立てていくものに近い思想だそうです。 私は音楽に疎い人なのですが意味は理解しました。(笑)性格的には即興は苦手っす。

CRD と Operators

Pod や Replication,Deployment など様々なリソースがあります。 ただ、Kubernetes が持っていないものを実装するにはどうすればよいのでしょうか。 そこで、Custom Resource Definitions (CRD)です。 なんだそれは...?

https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

https://qiita.com/cvusk/items/773e222e0971a5391a51

要は、Pod や Deployment のようなリソースを独自に作ることができるのですね。おぉなんだそれ! 独自に機能を作るためには、Custom Resource と Costom Controller が必要になり、両方をあわせて Operators というものが生まれました。

例えば、下記のようなものがあります。 https://github.com/oracle/mysql-operator

https://github.com/kubeflow/tf-operator

Yahoo では、gimbal という OSS を使って Kubernetes を導入したみたいです。 https://github.com/heptio/gimbal

https://techblog.yahoo.co.jp/advent-calendar-2018/oss-gimbal/

詳しくは分かりませんが、こういった拡張しやすい機能があるおかげでドンドン普及するのだなと勉強になりました。

Q&A

Q1. StatefulSets には今回触れられなかったが、どういう扱いなのか

https://twitter.com/apstndb/status/1134409892033261569?s=20

Q2. スケーラビリティに関して

https://twitter.com/apstndb/status/1134410827627487232?s=20

Q3. Kubernetes はなぜ etcd を使っているか

https://twitter.com/apstndb/status/1134411776009785345?s=20

https://twitter.com/apstndb/status/1134412148237512705?s=20

https://twitter.com/apstndb/status/1134412317439844352?s=20

Q4. Virtual Kubelet とか k3s みたいなエッジで活用する動きがコミュニティでは感じられるが、どう見ている?

https://twitter.com/apstndb/status/1134413224839745536?s=20

https://twitter.com/apstndb/status/1134413431316987904?s=20

そのほか

参加者からの質問は、どれも鋭いものばかり。 適度な質問をしたいなとつぶやきました...。届かなかったけど...。 https://twitter.com/silverbirder/status/1134412867988480000?s=20

Osaka 会場

会場提供は、株式会社 Aiming さんでした。

https://aiming-inc.com/ja/

会場場所は、グランフロント大阪タワー B の 18 階にありました。(高い!) 今回使わさせて頂いた場所は、会議室でしょうか。 30,40 人ぐらい入れるスペースで、清潔感がありました。

kubernetes osaka satelite aiming
kubernetes osaka satelite aiming

東京との中継は、ときどき音声が途切れてしまうときもありますが、しっかりと写っていました。 ただ、コンテンツとしては、YouTube にあげらているので、わざわざ Osaka に出席しなくても良いのでは?とも思いました。

しかし、それでも Osaka に出席しても良い面もあるのかなと思います。

  • 他の方とのコミュニケーションが取れる
  • 一緒に発表を聞いて議論ができる

まあ、私はコミュ障なので、ほぼなかったですが...。

改善ポイントとしては、中継地からも質問ができるようになってくれたら良いなと期待しています。

最後に

Kubernetes について、どういった経緯で誕生したのか、また CRD についても勉強になりました。 また、Kubernetes とは違うのですが、「OSS のちから」というものがエンジニアの世界では大事だと強く感じました。 普段エンジニアが開発する上で、ほぼ間違いなく OSS を使っています。 エンジニアにとって、OSS は不可欠な存在であり、利用するばかりです。

Google がしたように、「広く使ってほしい、エンジニアを巻き込みたい」という願いから、 OSS として Kubernetes が広まっていった一要因と思いました。これが有償ならどうだったのでしょうか。 ここまで普及したのでしょうか。

OSS に貢献する企業は、日本にも多く存在します。 個人でも OSS へ貢献できますし、OSS Gate という初心者向けのものもあります。 Kubernetes のコントリビューターは、ちょっとハードルが高いですが、 私もエンジニアとして OSS へ貢献し続けていこうと思います。

そのほか

拙い文章なのに、最後まで読んでいただき、ありがとうございます。 twitter をしていますので、フォローしてもらえるとうれしいです。(silverbirder)

役立ったら、☕でサポートしてね!

シェアしよう

関連するタグ