2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
Kubernetesで始める新しい開発(全1記事)
リンクをコピー
記事をブックマーク
青山真也 氏:本日は「Kubernetes で始める新しい開発」というテーマでお話しさせていただきたいと思います。
簡単に自己紹介なんですけど、私サイバーエージェントの青山と申します。普段はインフラエンジニアで主業務は主にGKEみたいなKubernetesサーバサービスのプラットフォームやKubernetes関連のアーキテクトも行っております。
コミュニティ活動もしておりまして、Kubernetesなどクラウド系のMeet upの主催をしていたり、あとは本の著者や登壇もしております。
このページで何が言いたいかというとKubernetesが超好きです。見てわかる通りなんですけど。
(会場笑)
みなさんKubernetesを知っていますか? 知っている方……。
(会場挙手)
お、けっこう多い。ということはみなさん当然スマホを持っているので、手のひらサイズのKubernetesクラスタも……。
(会場笑)
持っている方……。
(会場挙手)
1人……。どうでしょう。
Kubernetesクラスタを持っていれば、カフェでもオシャレな感じにできますし、飛行機でももちろん使えます。
ちなみに飛行機で使うときは、普通の人が見るとどう見ても爆弾なのでマジで気を付けてください。捕まらないか、すごくヒヤヒヤします。
今年のテーマは「羽化」ですね。Kubernetesはちょうど5周年です。5年間成長してきました。カンファレンスの参加者もどんどん伸びたり、マネージドサービスもほとんどすべてが対応したり、ベンダーも対応したり、非常にデファクトスタンダードなプラットフォームとなってきました。
今年のテーマは「羽化」ですが、私もこのKubernetesとともに3年間成長してきてKubernetes愛に溢れる人材になったので、今日はKubernetesの話をします。
そもそもKubernetesとCLOUD NATIVEって何か? Kubernetesを管理しているCNCF「CLOUD NATIVE COMPUTING FOUNDATION」という団体があります。
そこがCloud Nativeの定義を行っていて、疎結合性や復元力がある、管理しやすい、可観測である、自動化でアップデートしやすい。そういった特徴を持つシステムをオープンなテクノロジーを使ってスケーラブルに実現することが目的になっています。
なのでCloud NativeというのはKubernetesのためだけのものではなくて、Kubernetesを使うと実現しやすいものではあるんですけど、他にもAWS ECSなどのその他の手段というのもあります。
サイバーエージェントの話でちょっとお話させていただくと、AI tech studioではGKE互換のKubernetes基盤を作っていたり、ただKubernetesクラスタをデプロイをするだけじゃなくてKubernetes自体のソースコードに改良を入れるなどけっこういろいろやっています。GKEが対応しているContaner-nativeロードバランシングという機能も独自実装をするぐらい大好きです。
ちなみにスライド右上のキャラクターのAKE……うちのコンテナ基盤のマスコットキャラクターなんですけど「あくーえ」と言います。……シーンって感じですね。
(会場笑)
あとはAbemaTVでもけっこう早い段階からKubernetesを利用していたり、他にもいろんなプロダクトで使ったりしています。
実際問題なんですけどKubernetesを使うと何ができるのかというと、今日お話したいのは主に3つあります。1つ目はたぶんみなさんが一番想像しやすい「コンテナやアプリケーションの実行基盤」としてのKubernetes。もう1つが「X as a Service 基盤」としてのKubernetes。いわゆるマネージドサービス基盤みたいなものですね。
最後にお話したいのが、ここらへんでみなさんは引き気味にこっちを見る感じになると思うんですけど、本当に根本的なことを言うと、「分散システムフレームワーク」としてKubernetesがあるという話を今日はやっていきます。
1つ目の「アプリケーションとコンテナの実行基盤」です。KubernetesではYAML形式のマニフェストを書いて、それをKubernetesに登録すると、コンテナを起動したりロードバランサの設定をしてくれるものになります。
例えば、nginxをスケールして3台に溜めておいてほしいというのは、YAMLを書いて登録をしておくと自動的にやってくれますし、登録を1度しておくと何か起こってもセルフヒーリングして自動的に戻してくれたり、あとはロードバランサと自動的に連携してくれたり、オートスケールしてくれたりします。
あとはもともとKubernetesというのはGoogleのBorgというものをベースとして作られたオープンソースのソフトウェアになっているので、Googleが長年社内でやってきたクラスタマネジメントやワークロードの管理を行う洗練された自動化が使えるようになります。それによってさまざまなワークロードへ対応することが可能になってきています。
2つ目の「X as a Service 基盤」としてのKubernetesです。Kubernetes自体はプラットフォームのためのプラットフォームという言葉で表現されることもよくあります。例えばKubernetes上にDatabase as a Service基盤を作ったり、Queue as a Service 基盤を作ったり、そういったことが可能になります。例えば「MySQLのクラスタがほしいな」という場合は、マネージドサービスではAWSのRDSとかGCPのCloud SQLとかを起動すると思います。
Kubernetesでも「MySQLのクラスタほしいです」とマニフェストにReplica数やマルチマスタするかの簡単な設定を書くだけで、あとは自動的にMySQLのクラスタを作ってくれる仕組みもあります。万が一、MySQLのノードが1台落ちたとしても自動的に障害から復旧してくれたり、基本的にマネージドな自動化された仕組みを使うことができます。
なのでKubernetesはもうちょっと言い換えると小さなクラウドとしても見ることができます。Kubernetes上にDatabase as a ServiceやQueue as a Serviceなど、いろんなas a Service 基盤のプラットフォームを構築しておくと、デベロッパーがマネージドサービスっぽい基盤のシステムも使えるようになります。
最後に「『分散システムフレームワーク』としてのKubernetesです。Kubernetesのコアが何かというと、宣言的なAPIと分散システムのフレームワークだと思います。ReplicaSeではコンテナを複数個起動しておきます。例えば3つ起動しておくものを登録したら、そのときに3つのコンテナを起動して終わりではなくて、ControllerがKubernetesの中でずっと動いています。
このときControllerは何をしているかというと、ReplicaSetの例だと、登録されている状況を見つつクラスタに対してコンテナを起動したりしています。先ほども言った通り、ただ起動するだけじゃないという話は、Controllerが調整ループなどと言ったりするループプログラムをずっと回していて、あるべき状態に収束させることをやっています。
ループ処理では何をしているかというとObserve・Diff・Actという3つの工程を経ていて、現状を確認するのと、理想を現実の差分を計算して、その差分に対して何か処理をする流れになっています。
例えば2個しか動いていない状態だったら、Observeでは理想を現実を把握します。
それに対してDiffでは差分を計算する、するとコンテナが1つ足りない。
なのでアクションとしてnginxのコンテナを1つ立てるという。という処理をずっと繰り返しています。
結局これは何をしているのかというと、Controllerは運用ナレッジをプログラム化をすることによって自動化しています。ここが自動化されていないとすると、人が監視のアラートを見て「2個しか動いていないから手動で1個立てましょう」となると思うんですけど、そういうものをKubernetesではControllerによって自動化し、そのままノンオペレーションでやることができるようになっています。
Kubernetes内ではこういうControllerが非常にたくさん動いています。このControllerたちがいろいろな役割を担って非同期で動作することによって1つの分散システムを構成しています。
例えばMySQLの例だと「MySQLを立ててほしい」となったときにMySQLのスペシャリストにすべてを任せるじゃないですか。Kubernetesの場合、RDBだったらデータベースのスペシャリストの運用ナレッジから作られたControllerプログラムを使った自動化に任せることができます。そういった自動化の仕組みを使うことによっていろいろできると。
このControllerの仕組みはKubernetesでは拡張して実装できるようになっています。このMySQLを管理するコントローラプログラムもせっかくオラクルさんが作ってくれたものがあるので簡単に利用することができます。また、自分たちのドメイン特化な運用ナレッジを自動化したいとなったときに、自分で実装してControllerを実装することによって、今までやっていた運用を任せることができるのはKubernetesの非常に良いところです。
まとめると、この3つがKubernetesの良いところです。一番下が大事なところなので、雰囲気でもいいのでぜひ覚えていただけると幸いです。
ということで、ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略