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
EKSと動的プロビショニングEFSを使ったマルチリージョンDR
Search
高棹大樹
June 05, 2024
Technology
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EKSと動的プロビショニングEFSを 使ったマルチリージョンDR
高棹大樹
June 05, 2024
More Decks by 高棹大樹
See All by 高棹大樹
徹底討論!ECS vs EKS!
daitak
3
1.8k
金融システムで挑む!EKS Auto Mode導入ポイント大全
daitak
0
130
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
740
EKS CapabilitiesでKube Resource Orchestrator(KRO)を試してみた!
daitak
0
130
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
870
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
1
250
CBになったのでEKSのこともっと知ってもらいたい!
daitak
1
310
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
0
270
AWS re:Invent 2024で発表されたアップデート/EKSオートモード使っていきましょう!
daitak
1
270
Other Decks in Technology
See All in Technology
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.5k
Amazon Redshift zero-ETL 統合を活用した軽量なマルチプロダクトデータ可視化基盤 / Lightweight Multi-Product Data Visualization with Amazon Redshift Zero-ETL
kaminashi
0
140
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
130
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
1
620
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
290
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
250
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
250
AWS PrivateLink × SCIM で実現する セキュアで運⽤負荷の低い Databricks 基盤の構築
tsuda7
0
120
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
140
デジタル・デザイン:次の50年を描く「進化する青写真」
y150saya
0
640
知見・人・API・DB・予算 ─ ナイナイ尽くしだった人事データ整備 with dbt、5年間の学び
ken6377
1
110
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
210
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Navigating Weather and Climate Data
rabernat
0
260
Crafting Experiences
bethany
1
190
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
It's Worth the Effort
3n
188
29k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Building AI with AI
inesmontani
PRO
1
1.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
270
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Transcript
EKSと動的プロビショニングEFSを 使ったマルチリージョンDR Storage-JAWS #4 2024年6月5日 株式会社野村総合研究所 マルチクラウドインテグレーション事業本部 金融基盤サービス部 高棹 大樹
1 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
高棹 大樹 – Daiki Takasao NRI 金融基盤サービス部 • 金融機関様向けEKSを用いたマイクロサービス共通基盤 のインフラ担当 主な仕事 趣味 最近の困り事 • キャンプ • 筋トレ • 子供と遊ぶ(相手をしてくれる内に。。) • 飼っている猫が懐いてくれない
2 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
はじめに ◼EKSからEFSを扱う際に必要となるコンポーネントについて説明しつつ、その機能を使ったマルチ リージョンDR構成についてお伝えいたします
3 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKSのストレージの扱い方とプロビショニングについて 01 EKSのストレージとしてのEFS 02 EKSと動的プロビショニングEFSを使ったマルチリージョンDR 03
4 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKS(Elastic Kubernetes Service)とは? 1.EKSのストレージの扱い方とプロビショニングについて ◼ AWSのマネージドKubernetesサービス ◼ コントロールプレーンの管理が不要、 IAMユーザ/ロールによる認証(k8sでの証明書管理が不要)、などがメリット コントロールプレーンの管理が不要 コンテナ コンテナ コンテナ IAMユーザ/ロールによる認証 コントロールプレーン: ワーカーノードやコンテナの稼働を管理 ワーカーノード: コンテナの稼働環境
5 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKS(Kubernetes)のストレージの扱い方 1.EKSのストレージの扱い方とプロビショニングについて ◼PersistentVolume(PV)というKubernetesの永続ボリュームのリソースを使うのが一般的 ◼PersistentVolumeClaim(PVC)を作成し、PVCの条件(ボリュームサイズ、アクセスモード等)に合 致したPVを使える仕組み PersistentVolume(PV) 10GB ReadWriteOnce 100GB ReadWriteOnce 100GB ReadWriteMany サイズ:100GB アクセスモード:ReadWriteMany PersistentVolumeClaim(PVC) 条件に合致するPVが 見付かったのでBound コンテナ ストレージ
6 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
PVとストレージのプロビショニング 1.EKSのストレージの扱い方とプロビショニングについて ◼プロビショニング方法は以下の2つ ① 静的プロビショニング ⚫ クラスタ管理者がストレージとそれに対応するPVを 手動で作成する ⚫ 複数PVが必要だとプロビショニングに手が取られて しまうデメリットあり ② 動的プロビショニング ⚫ PVCが作成されたタイミングで条件に合致したPVと ストレージを自動作成する! ⚫ StorageClassを作成する必要あり クラスタ管理者 ストレージ ①ストレージを作成 ②PVを作成 ストレージ StorageClass PVとストレージを自動生成
7 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
PVとストレージの紐付け 1.EKSのストレージの扱い方とプロビショニングについて ◼Container Storage Interface(CSI)ドライバーを介してPVとストレージが紐付けられる ◼静的プロビショニングの場合、PVでCSIドライバーを指定 ◼動的プロビショニングの場合、 StorageClassでCSIドライバーを指定 CSIドライバー Node Plugin Controller Plugin ワーカーノード(kubelet)とやりとりする コントロールプレーン(APIサーバ)とやりとりする ストレージ 静的プロビショニング の場合 動的プロビショニング の場合
8 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKSのストレージの扱い方とプロビショニングについて 01 EKSのストレージとしてのEFS 02 EKSと動的プロビショニングEFSを使ったマルチリージョンDR 03
9 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
PVとしてEFSを使うためには 2. EKSのストレージとしてのEFS ◼ EFS CSIドライバーを導入する事でEFSをPVとして扱う事が可能 ◼ 動的プロビショニングをサポート ◼ 動的プロビショニングではStorageClassとファイルシステム、PVC/PVとアクセスポイントが1:1で紐付く関係 ◼ 動的プロビショニングのアクセスポイントのディレクトリパスはランダム文字列を含んだPV名 EFS CSIドライバー EFS ファイルシステム PV名(ランダム文字列含む) PV名(ランダム文字列含む) fileSystemId: ファイルシステムID アクセスポイント PVとアクセスポイントを自動生成
10 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
subPathPatternパラメータを使ったファイル同期 2. EKSのストレージとしてのEFS ◼ EFS CSIドライバーv1.7.0(2023/9/21リリース)から導入されたsubPathPatternパラメータによりディレクトリパスを指 定できる様になった ◼ この機能で動的プロビショニングでもファイルシステム間でアクセスポイントのディレクトリパスを合せる事ができる様に なった → 動的プロビショニングでもファイルシステム間でファイル同期できる様になった! /PVCのNamaspace名/PVC名 ファイルシステムA subPathPattern: ${.PVC.namespace}/${.PVC.name} /PVCのNamaspace名/PVC名 ファイルシステムB subPathPattern: ${.PVC.namespace}/${.PVC.name} レプリケーション ディレクトリパスが同じなので ファイル同期が可能!
11 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKSのストレージの扱い方とプロビショニングについて 01 EKSのストレージとしてのEFS 02 EKSと動的プロビショニングEFSを使ったマルチリージョンDR 03
12 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼subPathPatternを使ったマルチリージョンDRのサンプルが公開されている https://github.com/aws-samples/dr-with-eks-efs/ ◼EFS CSIドライバー導入済みの以下の環境を用意する バージニア北部 EKSクラスタ(my-eks-pri) EFSファイルシステム (primary) みなし正サイト 北カリフォルニア EKSクラスタ(my-eks-dr) EFSファイルシステム(dr) みなしDRサイト レプリケーション
13 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(正サイト構築①) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼正サイトにStorageClassをデプロイする [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get storageclass efs-sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE efs-sc efs.csi.aws.com Delete Immediate false 56s [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get storageclass efs-sc -o yaml apiVersion: storage.k8s.io/v1 kind: StorageClass ~~割愛~~ parameters: basePath: /dynamic_provisioning directoryPerms: "700" ensureUniqueDirectory: "false" fileSystemId: fs-08cd52462bcfa3599 gidRangeEnd: "2000" gidRangeStart: "1000" provisioningMode: efs-ap subPathPattern: ${.PVC.namespace}/${.PVC.name} ~~割愛~~ 正サイトのEFSファイルシステムIDを指定 subPathPatternを指定 (PVCのNamaspace名/PVC名)
14 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(正サイト構築②) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼正サイトにPVCとサンプルアプリをデプロイ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ cat config_files/application.yaml ~~割愛~~ kind: PersistentVolumeClaim metadata: name: efs-app-claim spec: accessModes: - ReadWriteMany storageClassName: efs-sc ~~割愛~~ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get deployment,pvc,svc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/efs-app 2/2 2 2 34s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/efs-app-claim Bound pvc-f2d490f6-0de5-4d1e-a354- 77a0beebe91e 1Gi RWX efs-sc 34s ~~割愛~~ 作成したStorageClassをPVC で指定 動的プロビショニングでPV(&EFSアクセスポイント)が 作成されてBoundしている サンプルアプリがEFSに配置した index.htmlを返している ブラウザから正サイトサンプルアプリにアクセス PVCのNamespace名 PVC名
15 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(DRサイト構築①) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼DRサイトもStorageClassをデプロイする [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get storageclass efs-sc -o yaml apiVersion: storage.k8s.io/v1 kind: StorageClass ~~割愛~~ parameters: basePath: /dynamic_provisioning directoryPerms: "700" ensureUniqueDirectory: "false" fileSystemId: fs-0155dfdd4fcd31ec9 gidRangeEnd: "2000" gidRangeStart: "1000" provisioningMode: efs-ap subPathPattern: ${.PVC.namespace}/${.PVC.name} provisioner: efs.csi.aws.com reclaimPolicy: Delete volumeBindingMode: Immediate DRサイトのEFSファイルシステムIDを指定 subPathPatternを指定(正サイトと同じ)
16 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(DRサイト構築②) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼DRサイトにPVCとサンプルアプリをデプロイ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get pvc efs-app- claim -o yaml apiVersion: v1 kind: PersistentVolumeClaim ~~割愛~~ name: efs-app-claim namespace: default ~~割愛~~ storageClassName: efs-sc volumeMode: Filesystem ~~割愛~~ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get deployment,pvc,svc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/efs-app 2/2 2 2 9m34s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/efs-app-claim Bound pvc-206acdfe-be44-4a77-a9f6- 070a55e5c89f 1Gi RWX efs-sc 9m35s ~~割愛~~ 正サイトとNamespace名とPVC名を合せる 動的プロビショニングでPV(&EFSアクセスポイント)が 作成されてBoundしている 正サイトと同じ内容を表示している → EFSでファイル同期ができている! ブラウザからDRサイトサンプルアプリにアクセス PVCのNamespace名 PVC名
17 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(DR発動) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼DR発動時にはEFSファイルシステム間のレプリケーションを削除する ◼削除することでDRサイトのEFSファイルシステムに書込み可能になる DR発動時にはEFSレプリケーションを削除 ブラウザからDRサイトサンプルアプリにアクセス DRのEFSファイルシステムが書込み可能になる
18 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
まとめ ◼EFSの動的プロビショニングはEKSクラスタ管理者にとってとてもありがたい機能 ◼Platform Engineering的にも、なるべくクラスタ管理者の手を掛けずに開発者だけでストレージ 構築を完結させたい ◼EFS CSIドライバーのsubPathPatternパラメータの登場で、動的プロビショニングしたEFSの用途が 広がった!
None