Chaos Mesh-hibát használó káoszkísérlet létrehozása az Azure CLI-vel
Egy káoszkísérlettel ellenőrizheti, hogy az alkalmazás rugalmas-e a hibákkal szemben, ha ezeket a hibákat egy ellenőrzött környezetben okozza. Ebben a cikkben az Azure Kubernetes Service (AKS) podhibáit okozhatja egy névtéren egy káoszkísérlet és az Azure Chaos Studio használatával. A kísérlet futtatása segíthet megvédeni a szolgáltatás elérhetetlenségét szórványos hibák esetén.
A Chaos Studio a Chaos Mesht, a Kubernetes ingyenes, nyílt forráskódú chaos mérnöki platformjának használatával injektálja a hibákat egy AKS-fürtbe. A Chaos Mesh-hibák olyan szolgáltatás-közvetlen hibák, amelyek megkövetelik, hogy a Chaos Mesh telepítve legyen az AKS-fürtre. Ugyanezekkel a lépésekkel konfigurálhat és futtathat kísérleteket az AKS Chaos Mesh-hibákhoz.
Előfeltételek
- Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
- Egy AKS-fürt Linux-csomópontkészletekkel. Ha nem rendelkezik AKS-fürttel, tekintse meg az Azure CLI-t, az Azure PowerShellt vagy az Azure Portalt használó AKS-rövid útmutatót.
Korlátozások
- A Chaos Mesh hibáit privát fürtökkel is használhatja a VNet-injektálás konfigurálásával a Chaos Studióban. A privát fürtnek kiadott parancsokat , beleértve a jelen cikkben a Chaos Mesh beállításának lépéseit is, követnie kell a privát fürt útmutatását. Az ajánlott módszerek közé tartozik egy virtuális gépről való csatlakozás ugyanabban a virtuális hálózaton, vagy az AKS parancshívási funkciójának használata.
- Az AKS Chaos Mesh-hibák csak Linux-csomópontkészleteken támogatottak.
- A Chaos Mesh hibái jelenleg nem működnek, ha az AKS-fürt helyi fiókjai le vannak tiltva.
- Ha az AKS-fürt úgy van konfigurálva, hogy csak engedélyezett IP-tartományokat engedélyezzen, engedélyeznie kell a Chaos Studio IP-tartományait. A szolgáltatáscímkét a
ChaosStudio
Service Tag Discovery API-val vagy letölthető JSON-fájlokkal kérdezheti le.
Az Azure Cloud Shell megnyitása
Az Azure Cloud Shell egy ingyenes interaktív rendszerhéj, amellyel futtathatja a cikkben leírt lépéseket. A fiókjával való használat érdekében a gyakran használt Azure-eszközök már előre telepítve és konfigurálva vannak rajta.
A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget egy kódblokk jobb felső sarkában. A Cloud Shellt egy külön böngészőlapon is megnyithatja a Bash megnyitásával. A Másolás gombra kattintva másolja a kódblokkokat, illessze be a Cloud Shellbe, és futtassa az Enter billentyűt.
Ha inkább helyileg szeretné telepíteni és használni a parancssori felületet, ehhez az oktatóanyaghoz az Azure CLI 2.0.30-s vagy újabb verziójára van szükség. A verzió azonosításához futtassa a következőt: az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
Feljegyzés
Ezek az utasítások egy Bash-terminált használnak a Cloud Shellben. Előfordulhat, hogy egyes parancsok nem működnek a leírtak szerint, ha helyileg vagy PowerShell-terminálon futtatja a parancssori felületet.
A Chaos Mesh beállítása az AKS-fürtön
Mielőtt a Chaos Mesh hibáit futtathatja a Chaos Studióban, telepítenie kell a Chaos Mesht az AKS-fürtre.
Futtassa a következő parancsokat egy Cloud Shell-ablakban , ahol az aktív előfizetés az az előfizetés, amelyben az AKS-fürt telepítve van. Cserélje le és
$CLUSTER_NAME
írja be$RESOURCE_GROUP
a fürterőforrás erőforráscsoportját és nevét.az aks get-credentials -g $RESOURCE_GROUP -n $CLUSTER_NAME helm repo add chaos-mesh https://charts.chaos-mesh.org helm repo update kubectl create ns chaos-testing helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
Ellenőrizze, hogy a Chaos Mesh-podok telepítve vannak-e a következő parancs futtatásával:
kubectl get po -n chaos-testing
A következő példához hasonló kimenetnek kell megjelennie (egy chaos-controller-manager és egy vagy több káosz-démon):
NAME READY STATUS RESTARTS AGE
chaos-controller-manager-69fd5c46c8-xlqpc 1/1 Running 0 2d5h
chaos-daemon-jb8xh 1/1 Running 0 2d5h
chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h
A Chaos Mesh webhelyén található telepítési utasításokat is használhatja.
A Chaos Studio engedélyezése az AKS-fürtön
A Chaos Studio csak akkor tud hibákat beszúrni egy erőforrásba, ha először hozzáadja az erőforrást a Chaos Studióhoz. Ha erőforrást szeretne hozzáadni a Chaos Studióhoz, hozzon létre egy célt és képességeket az erőforráson. Az AKS-fürtök csak egy céltípussal rendelkeznek (közvetlen szolgáltatással), de más erőforrások legfeljebb két céltípussal rendelkezhetnek. Az egyik céltípus a közvetlen szolgáltatáshibák. Egy másik céltípus az ügynökalapú hibák. A Chaos Mesh-hibák minden típusa olyan képességként jelenik meg, mint a PodChaos, a NetworkChaos és az IOChaos.
Hozzon létre egy célt a hozzáadni kívánt AKS-fürt megfelelő sztringjeinek lecserélésével
$SUBSCRIPTION_ID
$resourceGroupName
$AKS_CLUSTER_NAME
.az rest --method put --url "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh?api-version=2024-01-01" --body "{\"properties\":{}}"
A cél képességeinek létrehozásához cserélje le
$SUBSCRIPTION_ID
a ,$resourceGroupName
és$AKS_CLUSTER_NAME
a hozzáadni kívánt AKS-fürt megfelelő sztringjeire.
Cserélje le $CAPABILITY
a hozzáadni kívánt hiba "Képesség neve" helyére.
az rest --method put --url "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh/capabilities/$CAPABILITY?api-version=2024-01-01" --body "{\"properties\":{}}"
Íme egy példa a PodChaos
referencia képességének engedélyezésére:
az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.ContainerService/managedClusters/myCluster/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh/capabilities/PodChaos-2.1?api-version=2024-01-01" --body "{\"properties\":{}}"
Ezt a lépést minden olyan* képességnél el kell végezni, amelyet engedélyezni szeretne a fürtön.
Most sikeresen hozzáadta az AKS-fürtöt a Chaos Studióhoz.
Kísérlet létrehozása
Most már létrehozhatja a kísérletet. A káoszkísérlet meghatározza a célerőforrásokon végrehajtandó műveleteket. A műveletek sorrendbe vannak rendezve, és szekvenciális lépésekben futnak. A káoszkísérlet azt is meghatározza, hogy milyen műveleteket szeretne végrehajtani az ágakon, amelyek párhuzamosan futnak.
Chaos Mesh
jsonSpec
létrehozása:Tekintse meg a Chaos Mesh dokumentációját egy hibatípusról, például a PodChaos típusról.
A Chaos Mesh dokumentációjának használatával alakítsa ki az adott hibatípus YAML-konfigurációját.
apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: pod-failure-example namespace: chaos-testing spec: action: pod-failure mode: all duration: '600s' selector: namespaces: - default
Távolítsa el a yaML-t a
spec
megadott tulajdonságon kívül, beleértve a spec tulajdonság nevét is. Távolítsa el a specifikáció részleteinek behúzását. Aduration
paraméter nem szükséges, de ha meg van adva, akkor használatos. Ebben az esetben távolítsa el.action: pod-failure mode: all selector: namespaces: - default
Az ehhez hasonló YAML-to-JSON konverterrel alakítsa át a Chaos Mesh YAML-et JSON-ra, és minimalizálja azt.
{"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
Az ilyen JSON-sztringek feloldóeszközével elkerülheti a JSON-specifikációt, vagy módosíthatja a dupla idézőjeleket egy idézőjelekká.
{\"action\":\"pod-failure\",\"mode\":\"all\",\"selector\":{\"namespaces\":[\"default\"]}}
{'action':'pod-failure','mode':'all','selector':{'namespaces':['default']}}
Hozza létre a kísérlet JSON-ját a következő JSON-mintával kezdve. Módosítsa a JSON-t úgy, hogy megfeleljen a futtatni kívánt kísérletnek a Kísérlet létrehozása API, a hibatár és az
jsonSpec
előző lépésben létrehozott használatával.{ "location": "centralus", "identity": { "type": "SystemAssigned" }, "properties": { "steps": [ { "name": "AKS pod kill", "branches": [ { "name": "AKS pod kill", "actions": [ { "type": "continuous", "selectorId": "Selector1", "duration": "PT10M", "parameters": [ { "key": "jsonSpec", "value": "{\"action\":\"pod-failure\",\"mode\":\"all\",\"selector\":{\"namespaces\":[\"default\"]}}" } ], "name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:podChaos/2.1" } ] } ] } ], "selectors": [ { "id": "Selector1", "type": "List", "targets": [ { "type": "ChaosTarget", "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.ContainerService/managedClusters/myCluster/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh" } ] } ] } }
Hozza létre a kísérletet az Azure CLI használatával. Cserélje le
$SUBSCRIPTION_ID
a ,$RESOURCE_GROUP
és$EXPERIMENT_NAME
a kísérlet tulajdonságaira. Győződjön meg arról, hogy mentette és feltöltötte a kísérlet JSON-ját. Frissítsenexperiment.json
a JSON-fájlnévvel.az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
Minden kísérlet létrehoz egy megfelelő, rendszer által hozzárendelt felügyelt identitást. Jegyezze fel az identitás egyszerű azonosítóját a következő lépés válaszában.
A kísérlet engedélyének megadása az AKS-fürthöz
Káoszkísérlet létrehozásakor a Chaos Studio létrehoz egy rendszer által hozzárendelt felügyelt identitást, amely hibákat hajt végre a célerőforrásokon. Ennek az identitásnak megfelelő engedélyekkel kell rendelkeznie a célerőforráshoz a kísérlet sikeres futtatásához.
- Kérje le a
$EXPERIMENT_PRINCIPAL_ID
következő parancs futtatásával és aPrincipalID
válaszból való másolással. Cserélje le$SUBSCRIPTION_ID
a ,$RESOURCE_GROUP
és$EXPERIMENT_NAME
a kísérlet tulajdonságaira.
az rest --method get --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2024-01-01
- Adjon hozzáférést a kísérletnek az erőforrásokhoz az alábbi paranccsal. Cserélje le
$EXPERIMENT_PRINCIPAL_ID
az előző lépésben szereplő egyszerű azonosítóra. Cserélje le$SUBSCRIPTION_ID
a ,$resourceGroupName
és$AKS_CLUSTER_NAME
az AKS-fürt megfelelő sztringjeire.
az role assignment create --role "Azure Kubernetes Service Cluster Admin Role" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --assignee-principal-type "ServicePrincipal" --scope subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME
A kísérlet futtatása
Most már készen áll a kísérlet futtatására. Az effektus megtekintéséhez javasoljuk, hogy nyissa meg az AKS-fürt áttekintését, és nyissa meg az Elemzések lapot egy külön böngészőlapon. Az aktív podok számának élő adatai a kísérlet futtatásának hatását mutatják.
Indítsa el a kísérletet az Azure CLI használatával. Cserélje le
$SUBSCRIPTION_ID
a ,$RESOURCE_GROUP
és$EXPERIMENT_NAME
a kísérlet tulajdonságaira.az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2024-01-01
A válasz tartalmaz egy állapot URL-címet, amellyel lekérdezheti a kísérlet állapotát a kísérlet futtatásakor.
Következő lépések
Most, hogy futtatott egy AKS Chaos Mesh szolgáltatás-közvetlen kísérletet, készen áll a következőre:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: