
2025.02.12
職員一人あたり52時間の残業削減に成功 kintone導入がもたらした富士吉田市の自治体DX“変革”ハウツー
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の良いところです。一番下が大事なところなので、雰囲気でもいいのでぜひ覚えていただけると幸いです。
ということで、ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.10
A4用紙を持ち歩いて殴り書きでアウトプット コクヨのワークスタイルコンサルタントが語る、2種類のメモ術
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
【著者来館】『成果を上げるプレイングマネジャーは「これ」をやらない』出版記念イベント!
2025.01.10 - 2025.01.10