ラボセットアップ:Chaos Mesh、スケーリング、Podアフィニティ
このガイドでは、高可用性のプラクティスを実装してUIサービスの回復力を強化するための手順を説明します。helmのインストール、UIサービスのスケーリング、Podアンチアフィニティの実装、およびアベイラビリティーゾーン間のポッド分布を視覚化するヘルパースクリプトの使用方法について説明します。
Chaos Meshのインストール
クラスターの回復力テスト能力を強化するために、Chaos Meshをインストールします。Chaos MeshはKubernetes環境向けの強力なカオスエンジニアリングツールです。さまざまな障害シナリオをシミュレートし、アプリケーションがどのように応答するかをテストすることができます。
Helmを使用して、クラスターにChaos Meshをインストールしましょう:
~$helm repo add chaos-mesh https://charts.chaos-mesh.org
~$helm upgrade --install chaos-mesh chaos-mesh/chaos-mesh \
--namespace chaos-mesh \
--create-namespace \
--version 2.5.1 \
--set dashboard.create=true \
--wait
Release "chaos-mesh" does not exist. Installing it now.
NAME: chaos-mesh
LAST DEPLOYED: Tue Aug 20 04:44:31 2024
NAMESPACE: chaos-mesh
STATUS: deployed
REVISION: 1
TEST SUITE: None
スケーリングとトポロジースプレッド制約
Kustomizeパッチを使用してUIデプロイメントを変更し、5つのレプリカにスケールアップし、トポロジースプレッド制約ルールを追加します。これにより、UIポッドが異なるノードに分散され、ノード障害の影響が軽減されます。
パッチファイルの内容は次のとおりです:
- Kustomize Patch
- Deployment/ui
- Diff
~/environment/eks-workshop/modules/observability/resiliency/high-availability/config/scale_and_affinity_patch.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ui
namespace: ui
spec:
replicas: 5
selector:
matchLabels:
app: ui
template:
metadata:
labels:
app: ui
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app: ui
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app: ui