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
Docker and Python
trallard
41
3.1k
Speed Design
sergeychernyshev
25
670
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Git: the NoSQL Database
bkeepers
PRO
427
64k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Building Adaptive Systems
keathley
38
2.3k
Making the Leap to Tech Lead
cromwellryan
133
9k
Code Review Best Practice
trishagee
65
17k
Bash Introduction
62gerente
608
210k
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.