カオスメッシュによる雲自然カオス工学
クラウドでは、分散アーキテクチャはさらに複雑になっており、複雑さによってシステムがどのように失敗するかについての不確実性がもたらされている.
カオス工学は、サービスのための不適切なフォールバック設定などの大規模な停電を引き起こす前に欠点を識別するために欠点を識別するために故障を注入することによってシステムの弾力性をテストすることを目的とし、失敗の単一のポイントのために失敗をカスケードしたり、故障したタイムアウトのために再試行嵐.
歴史
Netflixが彼らの基盤の弾力性をテストするためにPREMサーバーからAWS基盤に移動したとき、カオス工学は2010年にNetflixで始まりました.
2012年に、NetflixオープンソースChaosMonkey Apache 2.0ライセンスの下では、インスタンスが失敗した場合にサービスを確実にするためにインスタンスをランダムに終了します.
CNCF景観における雲固有カオス工学
CNCFはKubernetes環境、アプリケーション、マイクロサービス、およびインフラストラクチャに焦点を当てたエンジニアリングプラクティスとして定義された雲ネイティブのカオス工学に焦点を当てています.
クラウドネイティブのカオスエンジニアリングには4つのコア原理があります.
カオスメッシュ
カオスメッシュは、Kubernetes環境でカオスを編成する雲ネイティブのカオス工学プラットフォームです.それは基づいているKubernetes Operator pattern そして、アプリケーションとKubernetesインフラストラクチャに管理可能な方法で注入するカオス演算子を提供します.
カオス演算子は、カスタムオブジェクトdefition(CRD)を使用してカオスオブジェクトを定義します.これは以下のようなフォルト注入のために様々なcrdを提供します.
カオスメッシュインストール
カオスメッシュをすばやくインストールすることができますinstallation script . しかし、それは生産環境でヘルム3チャートを使用することをお勧めします.
Helmを用いたカオスメッシュのインストール
helm repo add chaos-mesh https://charts.chaos-mesh.org
chaos-testing
手動で、またはヘルムを自動的に作成します. helm upgrade \
--install \
chaos-mesh \
chaos-mesh/chaos-mesh \
-n chaos-testing \
--create-namespace \
--version v2.0.0 \
--wait
注意: gkeやeksを使っているならcontainerd
, その後使用 helm upgrade \
--install \
chaos-mesh \
chaos-mesh/chaos-mesh \
-n chaos-testing \
--create-namespace \
--set chaosDaemon.runtime=containerd \
--set chaosDaemon.socketPath=/run/containerd/containerd.sock \
--version v2.0.0 \
--wait
kubectl get pods -n chaos-testing
最初のカオスメッシュ実験
カオス実験はどのようなタイプの断層が注入されるかを説明する.
kubectl run nginx --image=nginx --labels="app=nginx" --port=80
kubectl get pods nginx -ojsonpath="{.status.podIP}"
kubectl run -it test-connection --image=radial/busyboxplus:curl -- sh
ping <IP of the Nginx Pod> -c 2
これによりIPをpingする時間が表示されます. kubectl apply -f - <<EOF
apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
name: nginx-network-delay
spec:
action: delay
mode: one
selector:
namespaces:
- default
labelSelectors:
'app': 'nginx'
delay:
latency: '1s'
duration: '60s'
EOF
これは、タイプのCRDを作成しますNetworkChaos
これは、1 second
ラベル付きポッドのネットワークでapp:nginx
次のためのi . e nginx pod60 seconds
.1 second
. HttpChain実験を実行する
HTTPChaos
HTTPサーバの要求と応答に障害を注入することができます.サポートabort
, delay
, replace
, patch
故障タイプNote: Before proceeding, delete the NetworkChaos experiment created earlier.
kubectl exec -it test-connection -- sh
time curl <IP of the Nginx Pod>
HTTPSChaos
走る実験 kubectl apply -f - <<EOF
apiVersion: chaos-mesh.org/v1alpha1
kind: HTTPChaos
metadata:
name: nginx-http-delay
spec:
mode: all
selector:
labelSelectors:
app: nginx
target: Request
port: 80
delay: 1s
method: GET
path: /
duration: 5m
EOF
これは、タイプのCRDを作成しますHTTPChaos
これは、1 seconds
ラベルでポッドに送られる要求にapp:nginx
次のためのポート80のI . E Nginxポッド5 mins
.注意:エラーが発生した場合
admission webhook "vauth.kb.io" denied the request
, バージョン2.0のようにオープン問題があります2187 そして、一時的な修正は、有効なwebhookを削除することです.kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io validate-auth
time curl <IP of the Nginx Pod>
追加が表示されます1 second
応答の待ち時間.Reference
この問題について(カオスメッシュによる雲自然カオス工学), 我々は、より多くの情報をここで見つけました https://dev.to/aws-builders/cloud-native-chaos-engineering-with-chaos-mesh-3a96テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol