Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クラスターを分割するという運用の現実解 ~Pod を VM のように使い始めたら見えてきた世界~
Search
Snona
May 02, 2024
1
21
クラスターを分割するという運用の現実解 ~Pod を VM のように使い始めたら見えてきた世界~
Talked at 「CloudNative Days Tokyo 2023」
https://cloudnativedays.jp/cndt2023/talks/1970
Snona
May 02, 2024
Tweet
Share
More Decks by Snona
See All by Snona
未来を見据えた CI/CD ~ 10年後も使える ビルド・テスト パイプライン ~
snona
1
36
Dagger - 最強(かもしれない)CI/CD 環境 -
snona
1
10
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Documentation Writing (for coders)
carmenintech
66
4.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
The Language of Interfaces
destraynor
154
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
What's in a price? How to price your products and services
michaelherold
243
12k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
97
Visualization
eitanlees
146
15k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Facilitating Awesome Meetings
lara
50
6.1k
Transcript
クラスターを分割するという運用の現実解 ~ Pod を VM のように使い始めたら見えてきた世界 ~ 1 © 2023
CASAREAL,Inc. 株式会社カサレアル 野中 翔太
PROFILE 2 © 2023 CASAREAL,Inc. 野中 翔太 / casa_snona 株式会社カサレアル
プロフェッショナルソリューション技術部 ・クラウドインフラ関連のお仕事をしています。 ・今年、第一子(娘)が生まれました! Favorite
株式会社カサレアル 設立 :1999年7月2日 従業員数:84名(2023年9月現在) 株主構成:テクマトリックス株式会社 所在地 :東京都港区港南1-2-70 品川シーズンテラス 24 階
3 © 2023 CASAREAL,Inc.
事業紹介 4 © 2023 CASAREAL,Inc. ラーニングサービス • 研修事業 • オープン研修
• カスタムメイド研修 • 新入社員研修 • 技術支援/内製化支援 クラウドネイティブ 推進支援サービス • プロフェッショナルサービス • クラウドネイティブ推進支援 • DevSecOps 環境構築支援 • 開発プロセス/テスト自動化支援 • クラウドネイティブ道場 ビジネス ソリューション • 受託開発/SES • システム構築サービス • 開発支援サービス • パッケージサービス
AGENDA • 運用改善プロジェクトは突然に • VM から Kubernetes へ • クラスター分割
• まとめ 5 © 2023 CASAREAL,Inc.
運用改善プロジェクトは突然に 6 © 2023 CASAREAL,Inc.
運用改善プロジェクトは突然に 7 © 2023 CASAREAL,Inc. 上 野 うちに来てくれてる協力会 社さんいるじゃない? 彼らの開発環境なんだけど、
ブラウザ経由でデスクトッ プにアクセスしてもらって るんだよね。 はい、いますね。 たしか、ブラウザさえあれ ばどこでも開発環境にアク セスできるんですよね。
運用改善プロジェクトは突然に 8 © 2023 CASAREAL,Inc. 上 野 そうそう。 実はあれ、VM を1人1台
構築してあげてるんだよね。 しかも担当者が手動で構築 してインストールとかやっ てるから結構時間がかかっ てるんだよ。 そうなんですねぇ。 大変そうですね。
運用改善プロジェクトは突然に 9 © 2023 CASAREAL,Inc. 上 野 かわいそうだと思うよね~ てなわけで助けてあげてほ しんだよね、お得意なクラ
ウドネイティブで! あっ、はい…
運用改善プロジェクトは突然に 運用改善チームを結成 10 © 2023 CASAREAL,Inc. 上
運用改善プロジェクトは突然に 課題 • VM の手動構築に時間がかかる • 協力会社さんの増員後、すぐに開発環境を用意できない • 手動構築なので設定もれなどがたまにある 11
© 2023 CASAREAL,Inc. まだ かな?
運用改善プロジェクトは突然に 改善方針 • 開発環境をコンテナ化 • 複数のコンテナをすぐに起動できる • コンテナイメージとしてパッケージングすることで再現性の担保 • オーケストレーションするために
Kubernetes を導入 12 © 2023 CASAREAL,Inc.
INDEX • VM から Kubernetes へ 13 © 2023 CASAREAL,Inc.
VM から Kubernetes へ 14 © 2023 CASAREAL,Inc.
VM から Kubernetes へ VM 時代はこんな感じでした 15 © 2023 CASAREAL,Inc.
AWS Cloud 手順書通りに構築 増員分の環境準備 お願いします。 これ終わったら 着手します。 別の案件と掛け持ちしながら... AWS の UI 変わった? できあがり! 増員分の EC2 構築 開発ツールインストール 数時間後...
VM から Kubernetes へ VM で運用していたものを Kubernetes へ 16 ©
2023 CASAREAL,Inc. 開発チーム別に構築された EC2 インスタンス × 開発者数 CI/CD パイプライン コントローラー×1 エージェント×5
VM から Kubernetes へ まずは開発環境をコンテナ化 17 © 2023 CASAREAL,Inc. Kasm
が提供する デスクトップ環境のコンテナイメージを ベースイメージとしてコンテナ化
VM から Kubernetes へ (images) とは • Kasm Workspaces(The Container
Streaming Platform®)を開発している企 業が、OSS として公開している Docker イメージ • デスクトップ環境(VNC)が構築済みのイメージ • Dockerfile を自由にカスタマイズすることが可能 • カサレアルでは開発環境毎(Java、Python、Node.js etc...)にカスタマイズした Dockerfile を Git 管理している 18 © 2023 CASAREAL,Inc.
VM から Kubernetes へ こんな感じの開発環境が出来上がる 19 © 2023 CASAREAL,Inc. IntelliJ
IDEA をインストール するようにカスタマイズ ブラウザで開発環境へアクセス IntelliJ IDEA で簡単な Java コードを実行
VM から Kubernetes へ CI/CD 環境をコンテナ化 • Jenkins 自体のコンテナ化は不要 20
© 2023 CASAREAL,Inc. コントローラーは Helm Chart でインストール エージェントは Jenkins の Kubernetes Plugin によって動的に作成される It’s スケーラブル!
VM から Kubernetes へ Kubernetes Plugin って? • Kubernetes クラスターで動的エージェントを実行するための
Jenkins Plugin 21 © 2023 CASAREAL,Inc. Kubernetes クラスター ジョブ実行! ユーザ コントローラー エージェント Pod が起動して ジョブを実行する ジョブが終了したら Pod が消滅
VM から Kubernetes へ Kubernetes へデプロイ 22 © 2023 CASAREAL,Inc.
Kubernetes クラスター Java 開発チーム Python 開発チーム1 Python 開発チーム2 Front End 開発チーム CI/CD
VM から Kubernetes へ Kubernetes で構築プロセスはどうなった? 23 © 2023 CASAREAL,Inc.
構築が簡単に 増員分の環境準備 お願いします。 これ終わったら 着手します。 別の案件と掛け持ちしながら... マニフェストを アプライ! できあがり! Kubernetes クラスター 開発環境 増員!
VM から Kubernetes へ Kubernetes へ移行してよかったこと① • 構築作業の簡素化 • 構築にかかる時間を約
80% 削減 • 人的エラーを解消し、再現性を向上 24 © 2023 CASAREAL,Inc.
VM から Kubernetes へ Kubernetes へ移行してよかったこと② • 責任分界点の偏りを解消 • クラスターとネットワーク管理は運用チームが責任を持つ
• 環境構築用の Dockerfile は各開発チームが責任を持つ 25 © 2023 CASAREAL,Inc. アプリ OS/開発ツール 基盤 ネットワーク 開発チーム 運用チーム VM 開発チーム 運用チーム K8s
VM から Kubernetes へ Kubernetes へ移行してよかったこと③ • AWS 利用料の削減 •
月額の利用料を約 15% 削減 26 © 2023 CASAREAL,Inc.
VM から Kubernetes へ VM の構築に時間がかかっていた課題は解決 27 © 2023 CASAREAL,Inc.
上
VM から Kubernetes へ いいことばかりではなく... 28 © 2023 CASAREAL,Inc. 開発環境の動作が全体的に
モッサリしてる! Jenkins のジョブが なかなか始まらない... 遅くて仕事にならない!
VM から Kubernetes へ 何が起きたのか? 29 © 2023 CASAREAL,Inc. Kubernetes
クラスター Java 開発チーム Python 開発チーム1 Python 開発チーム2 Front End 開発チーム CI/CD
VM から Kubernetes へ 何が起きていたかというと... 30 © 2023 CASAREAL,Inc. Kubernetes
クラスター Java 開発チーム リソース全然 足りないぜ エージェントの Pod が起動できない VSCode は軽量なはずなのに なんか重い
VM から Kubernetes へ とりあえずワークアラウンド的解決 • ワーカーノードのノード数増加 • ワーカーノードのスペック向上 これはあるべき姿なのか
31 © 2023 CASAREAL,Inc.
VM から Kubernetes へ 新たな課題 • 特定の高負荷 Pod がクラスター全体の安定性に影響を与えてしまう •
K8s のバージョンアップが行いづらい • 各チームへのお伺いが必要 • 全てのチームの足並みをそろえざるを得ない • 納期が近いからもう少し待ってほしい etc... どこかで聞いたような課題だなぁ 32 © 2023 CASAREAL,Inc.
VM から Kubernetes へ なんかモノリスっぽいぞ 33 © 2023 CASAREAL,Inc.
VM から Kubernetes へ モダンなプラットフォーム(K8s)であっても 運用がモノリスになりがち クラスターの責務を分散できないか? 34 © 2023
CASAREAL,Inc.
INDEX • クラスター分割 35 © 2023 CASAREAL,Inc.
クラスター分割 36 © 2023 CASAREAL,Inc.
クラスター分割 一般的な複数クラスターの構成パターン 37 © 2023 CASAREAL,Inc. 同じインフラで 複数クラスターを扱う マルチクラウドで 複数クラスターを扱う
ハイブリットクラウドで 複数クラスターを扱う 今回はこのパターン
クラスター分割 分割単位 • 開発チーム単位と共有リソースで分割 38 © 2023 CASAREAL,Inc. Kubernetes クラスター
…共有リソース …開発チームA …開発チームB …開発チームC 開発チームA 開発チームB 開発チームC CI/CD 分割前のモノリスクラスター 分割されたクラスター
クラスター分割 複数のクラスターを管理するのは大変じゃないか 39 © 2023 CASAREAL,Inc. クラスター管理は任せて!
クラスター分割 とは • Kubernetes 管理プラットフォームの OSS • ハイブリットやマルチクラウドで KaaS(K8s as
a Service) を実現する • カタログ(Helm Chart)によるアプリの GUI 管理 • アプリ無停止で K8s をバージョンアップ • グループ化したクラスターへの共通的なリソース作成 40 © 2023 CASAREAL,Inc.
クラスター分割 クラスター分割後の構成 41 © 2023 CASAREAL,Inc. 開発チームA 開発チームB 開発チームC CI/CD
管理クラスター ブラウザで 操作 ネットワーク経由で 監視・制御
クラスター分割 Rancher を導入してよかったこと① • 開発環境毎のカタログを GUI で管理できる 42 © 2023
CASAREAL,Inc. 1.カタログを選択 2.「Install」クリック 3.Values 設定 4.「Install」クリック
クラスター分割 Rancher を導入してよかったこと② • K8s のバージョンアップが容易 • クラスターのコンフィグ変更(GUI)でバージョンアップが可能 • 稼働中の開発環境を無停止でバージョンアップできる
43 © 2023 CASAREAL,Inc.
クラスター分割 Rancher を導入してよかったこと③ • 共通的なリソースの自動作成が容易 • 例)Java 開発環境のクラスターは想定以上のリソースを 利用しないようにリソースクォータを設定 44
© 2023 CASAREAL,Inc. Java 開発チーム1 Java 開発チーム2 Java 開発グループ 管理クラスター リソースクォータの カタログ
INDEX • まとめ 45 © 2023 CASAREAL,Inc.
まとめ • VM の開発環境をコンテナ化して K8s へ • 構築時間を大幅に削減した • クラスターをチーム単位で分割
• 特定の高負荷 Pod による影響を限定的にした • K8s のバージョンアップを行いやすくした • Rancher の導入 • 複数クラスターの管理をしやすくした 46 © 2023 CASAREAL,Inc.
まとめ 数々の課題を解決して無事にミッション達成 47 © 2023 CASAREAL,Inc. 上
まとめ 現状の最適がこの先も最適とは限らない 最高傑作のアーキテクチャに拘らず 柔軟なアーキテクチャを目指すべき 48 © 2023 CASAREAL,Inc.