2024.10.21
お互い疑心暗鬼になりがちな、経営企画と事業部の壁 組織に「分断」が生まれる要因と打開策
リンクをコピー
記事をブックマーク
青山真也氏:本日は「"Platform for Platform" with Kubernetes」というテーマで発表いたします。よろしくお願いします。
軽く自己紹介します。私は青山と申します。2016年に株式会社サイバーエージェントに新卒入社して、現在はメディア側とAI事業本部側の、プライベートクラウドのインフラ部隊を合併して作った「CyberAgent group Infrastructure Unit」、通称CIUで働いています。
ふだんの主な業務は、今日紹介するKubernetes as a Serviceと、ML Platformの開発を行なっています。Kaas(Kubernetes as a Service)はプロダクトオーナーという立ち位置でやっています。
サイバーエージェントにはDeveloper Expertsという制度があって、私はKubernetes/CloudNative領域のExpertとしても認定されています。ほかにも、「CloudNative Days」や「Kubernetes Meetup Tokyo」のco-chairやオーガナイザーなどをやっています。
要はKubernetesが大好きなんですね。趣味も「おうちKubernetes」で、SynologyのNAS(ネットワークHDD)を買って、CSIドライバを書いて自宅クラスターを作っているので、もし興味があれば、この記事もぜひ読んでみてください。
ということで、さっそく内容に入っていきたいと思います。私たちCIUの中には、実はdevチームと呼ばれる開発部隊がいます。このdevチームで開発している基盤は、現状主に次の2つです。Kubernetes as a ServiceとML Platformです。
Kubernetes as a Serviceは、通称AKEと呼ばれるシステムでして、Googleの「GKE(Google Kubernetes Engine)」やAWSの「EKS(Elastic Kubernetes Service)」のように、Kubernetesクラスターをユーザーにフルマネージドなかたちで提供するようなサービスです。
もう一方のML Platformは、後ほど細かく紹介しますが、機械学習をシームレスに行うための基盤を作っています。
このどちらもKubernetesをベースとして作っています。まずはKubernetesの拡張性の話をしていきたいなと思います。
おさらいですが、Kubernetesは複数台のコンテナのホストマシンを管理する機能がある「コンテナオーケストレーションツール」の1つです。ここでいう「管理」は、スケジューリングやローリングアップデートなど、さまざまなものが挙げられます。Kubernetesはこのオーケストレーションツールの1つです。
もう1つ、Kubernetesではコンピューティングリソースの資源や、ストレージ系の資源、またGPUなど、さまざまな資源を抽象化して扱えるのもKubernetesの特徴です。このあたりが、よくあるKubernetesの説明かと思います。
ここまで聞くと、「Kubernetesはコンテナを実行する基盤なのか?」「インフラの基盤っぽい」「ただ実行するだけの基盤なのか」と思う方も多いと思いますが、実はそうではないという話をしていきたいと思います。
もう少しKubernetesの内部の話をしていきたいと思います。Kubernetesでは、右のYAMLファイルのようなReplicaSetリソースと呼ばれるものがあります。このマニフェストで、どういうコンテナを何個起動するか、何個複製するかを定義してKubernetesにApplyすると、ReplicaSetの定義をもとにコンテナが3つ起動する流れになっています。
このマニフェストを登録した時に、3つ作られるだけではなく、実はKubernetesの内部でControllerと呼ばれるプログラムが、この状態に収束するように制御しています。この収束する制御は、Reconciliation loopと呼ばれていて、日本語に訳すと「調整ループ」になります。
この調整ループは、主にObserveとDiffとActの3フェーズから成っています。Observeでは現状を把握。要求された状態と実際のステータスがどうかを見て、Diffで差分を計算して、Actionでその差分に対して何かしらのアクションを行います。3つあってほしいのに2個しかない時は、実際に1個作る処理をずっとループ処理で行なうイメージです。
Kubernetesでは、複数のControllerが中でいっぱい動いています。今回はReplicaSetコントローラーの例を紹介しましたが、ほかにもいっぱいあります。
例えばノード障害の時に自動復旧するものもあれば、ロードバランサーのメンバーを管理するコントローラーもあります。これによってKubernetesは分散システムとして成り立っています。
Controllerの仕組みなど、いろいろな拡張ポイントがあって、そういったControllerの仕組みをもとに、KubernetesやCNCF(Cloud Native Computing Foundation)のコミュニティでは、オープンな技術推進とそのエコシステムの開発が積極的に行われています。
例えば、先ほどのReconciliation loopを活用したOSSのControllerの例としてここに挙げているCert Managerは、IngressリソースというLoadBalancerを作った時に、自動的に証明書を払い出して、シークレットリソースを作り、Ingressと自動連携できるようにするものです。
またExternal DNSは、LoadBalancerから払い出されたIPアドレスをDNSと自動的に紐付けて管理したり、従来人がやっていた運用のナレッジもController化してまとめてKubernetesに任せたりできるようになっています。こうしたエコシステムが、非常にたくさんあります。
私たちの基盤でもこういうエコシステムはたくさん使っていますが、私たちの会社のユースケースに対応しきれない運用業務や取り扱いたいものは、けっこうあります。そうした時に、私たちはKubernetesの拡張性を活かして、自社の特定のドメインに特化した拡張機能を実装して提供しています。
先ほど紹介したControllerも、独自のカスタムControllerというかたちで作れますし、Kubernetesのリソースも独自のリソースを定義して作れます。あとは、Mutating WebhookやValidating Webhookという拡張ポイントも用意されています。
これはどんなものかというと、kubectl applyなどでKubernetesのAPIサーバーにマニフェストを送った時に、そのマニフェストを一部改変して登録したり、リクエストが来たマニフェストの内容を細かくチェックして、通すか通さないかを判別する拡張ポイントも用意されています。あとはkubectlのpluginや、さまざまなデバイスを扱うためのpluginなどといった拡張ポイントもあります。
ほかにもKubernetesの標準化のポイントとしては、コンテナランタイムや、ネットワークやストレージなどがあります。あとは標準化ではないのですが、クラウドプロバイダとの連携部分はインターフェイスがしっかり切られていて、自分たちの使いたいプロバイダがない場合には、自前で作ってPluggableに差し込めるようになっています。
まとめると、Kubernetesの強みは、先ほど紹介したとおりReconciliation loopが宣言された状態に収束してくれるところや、それをもとにしたエコシステムがいっぱいあるところです。ない場合には拡張性の高さがあるので、それをもとに自社のドメインに特化したControllerなど、拡張できることが強みです。
こうした特徴を私たちは活かしながら、いわゆるCNCF(Cloud Native Computing Foundation)が提唱しているクラウドネイティブな特性を得られると考えています。
なぜこういう特性を得ていきたいかというと、こうしたOSSの進化にも適切に追従しながら、プラットフォーム自体もきちんと進化させ続けることで、ビジネスの成功をプラットフォーム側からも支えたいという思いがあるからです。
ということで、ちょっと駆け足ですが、Kubernetesのどんなところがいいのか、どういった内部ロジックで拡張性を持っているのかを紹介しました。
(次回へつづく)
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗