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

マルチクラウド運用におけるKubernetes GKEとプライベートクラウドの特性を 活用した...

Avatar for shibatch shibatch
February 28, 2026
1

マルチクラウド運用におけるKubernetes GKEとプライベートクラウドの特性を 活用した成功事例

Avatar for shibatch

shibatch

February 28, 2026
Tweet

Transcript

  1. Introduction 4 • SUZURIというサービスでは、プライベートクラウド上の Kubernetes環境(NKE)とGoogle Kubernetes Engine(GKE)を併 ⽤している。 • 普段はNKEでほぼリクエストを処理していて、セールなどでリ

    クエストが増えた場合はGKEにもオフロードすることで、コス トを抑えた上で⾼可⽤性を実現している。 • 運⽤を楽にするために⾃動化を積極的に取り⼊れている。 • 各クラウド環境の特性を理解しつつ構成の差を最低限にする。 認知負荷を⼩さくすることが肝要。 はじめにざっくり結論
  2. 5 ⾃⼰紹介 技術部 プラットフォームグループ 2018年 中途⼊社 柴⽥ 巧平 Shibata Kohei • Platform

    Engineer + SRE • 2021年10⽉〜 SUZURI プラットフォームの 設計、運⽤ • 技術志向: Kubernetes / AWS • 𝕏(twitter) : @hokatabi
  3. 6 アジェンダ 1. SUZURIとは 2. 構成をシンプルに、無駄をなくした話 3. リクエストの振り分け変更を⾃動化した話 4. マルチクラウド化の苦労話

    4.1. TLS証明書取得仕様の差分 4.2. Redisをつくる 4.3. Ingress Controllerの仕様差分による障害 5. マルチクラウド化してよかったこと 6. まとめ
  4. 構成をシンプルに、無駄を無くした話 14 • GKE/NKEで同じ値にする(CPU/メモリ) • アプリケーションごとの専⽤ノードは避ける ◦ そのためにはアプリが必要なリソースを計測することが必要 ◦ VPA(垂直オートスケール)を利⽤してPodのリソースを計測

    • 環境の共通化による認知負荷の削減 ◦ 障害発⽣時やレイテンシの悪化などの解析の際変数が少なくてすむ ◦ 学習コストの低い環境にしよう ノードのリソースを統⼀する
  5. 構成をシンプルに、無駄を無くした話 15 • クラウドには個性がある ◦ GKE…ノードのオートスケールが容易、コストは割と⾼い ◦ NKE…ノードのオートスケールはできない、コストが低い • 普段はNKEで、リクエスト数増加時はGKEを併⽤して

    ◦ コストを抑えつつ、突発的なリクエスト数の増加にも楽に対応できる ▪ コストを抑えつつ運⽤できているのは社の基盤チームのおかげ ◦ 普段はどの程度のリクエスト数なのかを計測しておく ◦ ⼀応GKEにも普段から少しだけリクエストは流しておく プライベートクラウドをメインで使う
  6. マルチクラウド化の苦労話 - TLS証明書取得仕様の差分 35 • GKEのTLS証明書取得を Managed CertificateからNKEと 同じcert-managerに変更した •

    cert-managerはIAMのアクセス キーでRoute53にドメインを問 い合わせる • GKE/NKEで統⼀した構成になる ので認知負荷を下げる効果も TLS証明書取得仕様の差分
  7. マルチクラウド化の苦労話 - Redisの構築 37 • Lens2ではRedisを利⽤している • GKEではマネージドサービスであるMemorystore for Redisを使い、

    Deploymentでアクセス先のターゲットを設定している • NKEにはマネージドなRedisはないのでアクセス⼿段の検討が必要 Redisの構築 - name: REDIS_URL value: redis://10.0.0.75:6379
  8. マルチクラウド化の苦労話 - Redisの構築 38 Deploymentで設定してるアクセス先ターゲットは運⽤中変わらないことが条件 • GKEが使っているRedisにNKEからもアクセスする → 没 ◦ 基本的には同じネットワーク内からの利⽤を想定している •

    Redis Sentinel → 没 ◦ フェイルオーバーは即時だがVIPを切り替えることを求めると時間がかかる • Redis Cluster → 微妙 ◦ Lens2で改修が必要 → そこまでやる? • どうしよう Redisをどう構成するか
  9. マルチクラウド化の苦労話 - Redisの構築 40 基本に⽴ち返り、「何のためにRedisを使っているか」を調査する • 速度改善のためのデータの⼀時置き場 • セッションデータのような消えるとサービス影響のあるデータではない •

    データは永続化されていると嬉しい • 当然、可⽤性は担保していてほしい Lens2がRedisに求めているものは? 冗長化さえできていれば各Redisはレプリケーションされてなくていい
  10. マルチクラウド化の苦労話 - Redisの構築 41 NKEではシンプルな構成に - name: REDIS_URL value: redis://redis-svc.redis.svc.cluster.local:6379

    • StatefulSetが並列に並んでいるだけ • RedisのURLにServiceを指定する 必要な機能を満たしてさえいれば無理に GCPと同じ機能にしなくて良い (特にマネージドサービスを補う場合は)
  11. マルチクラウド化の苦労話 - Ingress Controllerの仕様差分 43 • GKE/NKEではIngressコントローラに差分がある ◦ GKE …

    GKE Ingress ◦ NKE… Ingress NGINX Controller • Ingress NGINX Controllerではデフォルトのアップロードサイズ制限があった • Ingressにアノテーションで設定を追加した 画像のアップロードができない! annotations: cert-manager.io/issuer: lens2-letsencrypt + nginx.ingress.kubernetes.io/proxy-body-size: 8m
  12. Introduction 49 • SUZURIでは、プライベートクラウド上のKubernetes環境 (NKE)とGoogle Kubernetes Engine(GKE)を併⽤している。 • 普段はNKEでほぼリクエストを処理していて、セールなどでリ クエストが増えた場合はGKEにもオフロードすることで、コス

    トを抑えた上で⾼可⽤性を実現している。 • 運⽤を楽にするために⾃動化を積極的に取り⼊れている。 • 各クラウド環境の特性を理解しつつ構成の差を最低限にする。 認知負荷を⼩さくすることが肝要。 • マネージドサービスすべてを再構成する必要はない。バランス が⼤事。 まとめ