ABEJA Tech Blog

中の人の興味のある情報を発信していきます

Kubernetes Federationの今とこれから

この記事はKubernetes Advent Calendar 2016 7日目の記事です。

Kubernetes v1.3から試験的に導入されているFederation機能について調べてみました。

なぜ調べたのか

当社システムのバックエンドではたくさんのDockerコンテナを使っていて、日々コンテナ数・ホストサーバ数が増えています。また、国内だけではなくグローバルでもサービス提供をするようになってきています。グローバルに分散した環境でのコンテナ管理をするための方法のひとつとして、Kubernetes Federationを調べてみました。

Federationとは

Federationは複数のリージョンやクラウドに配置されているKubernetesのクラスタを一括で管理できるようにする機能です。複数のクラスタの前段にfederation control planeというコンポーネントを配置する事で実現されています。ちょっと前まではUbernetesと呼ばれていました。

f:id:toshitanian:20161207102301p:plain

何が嬉しいのか

CoreOSの記事でFederationによって実現できる事が紹介されています。

グローバル・スケジューリング

Federation control planeを使う事によって、管理下にある任意のクラスタへPodを割り当てる事ができます。今後のアップデートによって、管理下のクラスタのそれぞれの負荷に応じた処理の分散をさせる事ができるようになります。複数のリージョンやクラウドにクラスタを配置する事で、処理性能あたりコストの安いクラスタで多めに処理をさせたり、リージョン毎に負荷の高い時間帯にリソースを集中させたりする事ができるようになります。

グローバルにサービスを提供している企業にとってはメリットになる部分ですね。

リージョン/データセンターレベルの障害に対する自動リカバリ

Kubernetesはマシンレベルでのダウンに対しては復旧が自動で行われるようになっています。一方でクラスタの属しているリージョン/データセンターレベルでシステムダウンが発生した場合はクラスタ全体がダウンしてしまいます。Federation control planeで複数のクラスタを管理する事で、特定のリージョン/データセンターがダウンした場合でも、稼働しているクラスタで処理を継続する事ができます。

ベンダーロックイン回避

Federation control planeの管理下となるクラスタを複数のクラウドに配置する事で特定のクラウドへのロックインを回避する事ができます。クラウド別の価格やサービスレベル等の環境変化に強いシステムを作る事ができます。

また、Kubernetesは元々Googleによって開発されていましたが、現在はCloud Native Computing Foundationの元で開発が進められており、多くの企業が開発に参加しています。

ロックイン回避という見方だけではなく、特定のクラウドだけではカバーできない地域でのサービス提供や、クラウドでは提供されていないハードウェアを使ったクラスタでのサービス提供などもできるという見方もできますね。

Federation機能のリリース状況

現在リリースされている機能についてはドキュメントが整備されているようです。

また、Kubernetes 1.5のリリース予定によると1.5で以下の機能が実装されるようです。

  • Federated Daemonset
  • Federated Deployments
  • Federation: Support generalized deletions, including cascading and ...
  • It should be fast and painless to deploy a Federation of Kubernetes (kubefedというコマンドが出来るらしい!)
  • Federated ConfigMap

1.5の機能実装により、今までクラスタでできていた事がFederationでもほぼできるようになるみたいです。

Federation試してみたい!

kelseyhightower / kubernetes-cluster-federationのチュートリアルがわかりやすいです。 Federated ReplicaSetを使って、複数のクラスタに横断した状態のnginxを動かす所までできました。

ただし、サンプルで使うクラスタは全てGKEで作られるものなので、GKEのマルチリージョンでのFederationは試せますが、マルチクラウドでのFederationは試せません。

公式のチュートリアルもありますが、私は動かす事ができませんでした。

感想

Federation機能がまともに使えるまでしばらくかかりそうですが、開発が進んでいってるので今後が楽しみです。kubefedが出てきて、GKE以外でも簡単に試せるようになるとネット上のナレッジも豊富になりそうです。Federation機能を必要とするユーザは限られている気もしますが広がっていくと嬉しいです。

ちょっと宣伝

ABEJAでは泣きそうになるくらいコンテナを動かしていますし、日々増えているので更に泣きそうになっています。Kubernetesが好きな方もそうで無い方も是非遊びに来てください。その他、サーバレスアーキテクチャとかSparkとかSPAに興味がある方も待ってます!

https://www.wantedly.com/companies/abeja/projects

参考