Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラスターを分割するという運用の現実解 ~Pod を VM のように使い始めたら見えてきた世界~

Snona
May 02, 2024
5

クラスターを分割するという運用の現実解 ~Pod を VM のように使い始めたら見えてきた世界~

Talked at 「CloudNative Days Tokyo 2023」

https://cloudnativedays.jp/cndt2023/talks/1970

Snona

May 02, 2024
Tweet

Transcript

  1. PROFILE 2 © 2023 CASAREAL,Inc. 野中 翔太 / casa_snona 株式会社カサレアル

    プロフェッショナルソリューション技術部 ・クラウドインフラ関連のお仕事をしています。 ・今年、第一子(娘)が生まれました! Favorite
  2. 事業紹介 4 © 2023 CASAREAL,Inc. ラーニングサービス • 研修事業 • オープン研修

    • カスタムメイド研修 • 新入社員研修 • 技術支援/内製化支援 クラウドネイティブ 推進支援サービス • プロフェッショナルサービス • クラウドネイティブ推進支援 • DevSecOps 環境構築支援 • 開発プロセス/テスト自動化支援 • クラウドネイティブ道場 ビジネス ソリューション • 受託開発/SES • システム構築サービス • 開発支援サービス • パッケージサービス
  3. 運用改善プロジェクトは突然に 7 © 2023 CASAREAL,Inc. 上 野 うちに来てくれてる協力会 社さんいるじゃない? 彼らの開発環境なんだけど、

    ブラウザ経由でデスクトッ プにアクセスしてもらって るんだよね。 はい、いますね。 たしか、ブラウザさえあれ ばどこでも開発環境にアク セスできるんですよね。
  4. 運用改善プロジェクトは突然に 8 © 2023 CASAREAL,Inc. 上 野 そうそう。 実はあれ、VM を1人1台

    構築してあげてるんだよね。 しかも担当者が手動で構築 してインストールとかやっ てるから結構時間がかかっ てるんだよ。 そうなんですねぇ。 大変そうですね。
  5. VM から Kubernetes へ VM 時代はこんな感じでした 15 © 2023 CASAREAL,Inc.

    AWS Cloud 手順書通りに構築 増員分の環境準備 お願いします。 これ終わったら 着手します。 別の案件と掛け持ちしながら... AWS の UI 変わった? できあがり! 増員分の EC2 構築 開発ツールインストール 数時間後...
  6. VM から Kubernetes へ VM で運用していたものを Kubernetes へ 16 ©

    2023 CASAREAL,Inc. 開発チーム別に構築された EC2 インスタンス × 開発者数 CI/CD パイプライン コントローラー×1 エージェント×5
  7. VM から Kubernetes へ まずは開発環境をコンテナ化 17 © 2023 CASAREAL,Inc. Kasm

    が提供する デスクトップ環境のコンテナイメージを ベースイメージとしてコンテナ化
  8. VM から Kubernetes へ (images) とは • Kasm Workspaces(The Container

    Streaming Platform®)を開発している企 業が、OSS として公開している Docker イメージ • デスクトップ環境(VNC)が構築済みのイメージ • Dockerfile を自由にカスタマイズすることが可能 • カサレアルでは開発環境毎(Java、Python、Node.js etc...)にカスタマイズした Dockerfile を Git 管理している 18 © 2023 CASAREAL,Inc.
  9. VM から Kubernetes へ こんな感じの開発環境が出来上がる 19 © 2023 CASAREAL,Inc. IntelliJ

    IDEA をインストール するようにカスタマイズ ブラウザで開発環境へアクセス IntelliJ IDEA で簡単な Java コードを実行
  10. VM から Kubernetes へ CI/CD 環境をコンテナ化 • Jenkins 自体のコンテナ化は不要 20

    © 2023 CASAREAL,Inc. コントローラーは Helm Chart でインストール エージェントは Jenkins の Kubernetes Plugin によって動的に作成される It’s スケーラブル!
  11. VM から Kubernetes へ Kubernetes Plugin って? • Kubernetes クラスターで動的エージェントを実行するための

    Jenkins Plugin 21 © 2023 CASAREAL,Inc. Kubernetes クラスター ジョブ実行! ユーザ コントローラー エージェント Pod が起動して ジョブを実行する ジョブが終了したら Pod が消滅
  12. VM から Kubernetes へ Kubernetes へデプロイ 22 © 2023 CASAREAL,Inc.

    Kubernetes クラスター Java 開発チーム Python 開発チーム1 Python 開発チーム2 Front End 開発チーム CI/CD
  13. VM から Kubernetes へ Kubernetes で構築プロセスはどうなった? 23 © 2023 CASAREAL,Inc.

    構築が簡単に 増員分の環境準備 お願いします。 これ終わったら 着手します。 別の案件と掛け持ちしながら... マニフェストを アプライ! できあがり! Kubernetes クラスター 開発環境 増員!
  14. VM から Kubernetes へ Kubernetes へ移行してよかったこと① • 構築作業の簡素化 • 構築にかかる時間を約

    80% 削減 • 人的エラーを解消し、再現性を向上 24 © 2023 CASAREAL,Inc.
  15. VM から Kubernetes へ Kubernetes へ移行してよかったこと② • 責任分界点の偏りを解消 • クラスターとネットワーク管理は運用チームが責任を持つ

    • 環境構築用の Dockerfile は各開発チームが責任を持つ 25 © 2023 CASAREAL,Inc. アプリ OS/開発ツール 基盤 ネットワーク 開発チーム 運用チーム VM 開発チーム 運用チーム K8s
  16. VM から Kubernetes へ いいことばかりではなく... 28 © 2023 CASAREAL,Inc. 開発環境の動作が全体的に

    モッサリしてる! Jenkins のジョブが なかなか始まらない... 遅くて仕事にならない!
  17. VM から Kubernetes へ 何が起きたのか? 29 © 2023 CASAREAL,Inc. Kubernetes

    クラスター Java 開発チーム Python 開発チーム1 Python 開発チーム2 Front End 開発チーム CI/CD
  18. VM から Kubernetes へ 何が起きていたかというと... 30 © 2023 CASAREAL,Inc. Kubernetes

    クラスター Java 開発チーム リソース全然 足りないぜ エージェントの Pod が起動できない VSCode は軽量なはずなのに なんか重い
  19. VM から Kubernetes へ 新たな課題 • 特定の高負荷 Pod がクラスター全体の安定性に影響を与えてしまう •

    K8s のバージョンアップが行いづらい • 各チームへのお伺いが必要 • 全てのチームの足並みをそろえざるを得ない • 納期が近いからもう少し待ってほしい etc... どこかで聞いたような課題だなぁ 32 © 2023 CASAREAL,Inc.
  20. クラスター分割 分割単位 • 開発チーム単位と共有リソースで分割 38 © 2023 CASAREAL,Inc. Kubernetes クラスター

    …共有リソース …開発チームA …開発チームB …開発チームC 開発チームA 開発チームB 開発チームC CI/CD 分割前のモノリスクラスター 分割されたクラスター
  21. クラスター分割 とは • Kubernetes 管理プラットフォームの OSS • ハイブリットやマルチクラウドで KaaS(K8s as

    a Service) を実現する • カタログ(Helm Chart)によるアプリの GUI 管理 • アプリ無停止で K8s をバージョンアップ • グループ化したクラスターへの共通的なリソース作成 40 © 2023 CASAREAL,Inc.
  22. クラスター分割 Rancher を導入してよかったこと① • 開発環境毎のカタログを GUI で管理できる 42 © 2023

    CASAREAL,Inc. 1.カタログを選択 2.「Install」クリック 3.Values 設定 4.「Install」クリック
  23. まとめ • VM の開発環境をコンテナ化して K8s へ • 構築時間を大幅に削減した • クラスターをチーム単位で分割

    • 特定の高負荷 Pod による影響を限定的にした • K8s のバージョンアップを行いやすくした • Rancher の導入 • 複数クラスターの管理をしやすくした 46 © 2023 CASAREAL,Inc.