Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden Sie die AWS FIS aws:eks:pod-Aktionen
Sie können die aws:eks:pod-Aktionen verwenden, um Fehler in die Kubernetes-Pods einzufügen, die in Ihren Clustern ausgeführt werden. EKS
Ruft das Pod-Container-Image ab, wenn eine Aktion initiiert wird. FIS FIS Dieses Image wird dann verwendet, um einen Pod im EKS Zielcluster zu erstellen. Der neu erstellte Pod ist für die Injektion, Steuerung und Überwachung des Fehlers verantwortlich. Bei allen FIS EKS Aktionen, mit Ausnahme von aws:eks:pod-delete, wird dies durch die Verwendung von ephemeren Containern erreicht, einer Kubernetes-Funktion, die die Erstellung temporärer Container
-
FISerstellt den FIS Pod in dem Cluster, der in der Experimentvorlage bereitgestellt wird.
-
Der FIS Pod erstellt einen kurzlebigen Container im Ziel-Pod.
-
Der FIS Pod steuert und überwacht die Fehlerinjektion des kurzlebigen Containers und FIS steuert und überwacht den Pod. FIS
Nach Abschluss des Experiments oder wenn ein Fehler auftritt, werden der kurzlebige Behälter und der FIS Pod entfernt.
Aktionen
Einschränkungen
-
Die folgenden Aktionen funktionieren nicht mit: AWS Fargate
aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
Die folgenden Aktionen unterstützen den
bridge
Netzwerkmodus nicht:aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
Sie können in Ihrer Experimentvorlage keine Ziele vom Typ aws:eks:pod mithilfe von Ressourcen- oder ARNs Ressourcen-Tags identifizieren. Sie müssen Ziele anhand der erforderlichen Ressourcenparameter identifizieren.
-
Die Aktionen
aws:eks:pod-network-latency
undaws:eks:pod-network-packet-loss
sollten nicht parallel ausgeführt werden und auf denselben Pod abzielen. Je nach Wert des von Ihnen angegebenenmaxErrors
Parameters kann die Aktion mit dem Status Abgeschlossen oder Fehlgeschlagen enden:Wenn
maxErrorsPercent
der Wert 0 ist (Standard), endet die Aktion mit dem Status Fehlgeschlagen.Andernfalls summiert sich der Fehler auf das
maxErrorsPercent
Budget. Wenn die Anzahl der fehlgeschlagenen Injektionen die angegebene Anzahl nicht erreichtmaxErrors
, wird die Aktion als abgeschlossen angezeigt.Sie können diese Fehler anhand der Protokolle des injizierten kurzlebigen Containers im Ziel-Pod identifizieren. Es wird fehlschlagen mit.
Exit Code: 16
-
Die Aktion
aws:eks:pod-network-blackhole-port
sollte nicht parallel zu anderen Aktionen ausgeführt werden, die auf denselben Pod abzielen und denselben verwendentrafficType
. Parallele Aktionen mit unterschiedlichen Verkehrsarten werden unterstützt. -
FISkann den Status der Fehlerinjektion nur überwachen, wenn
securityContext
der Ziel-Pods auf eingestellt istreadOnlyRootFilesystem: false
. Ohne diese Konfiguration schlagen alle EKS Pod-Aktionen fehl.
Voraussetzungen
-
Installieren Sie den AWS CLI auf Ihrem Computer. Dies ist nur erforderlich, wenn Sie die verwenden AWS CLI , um IAM Rollen zu erstellen. Weitere Informationen finden Sie unter Installation oder Aktualisierung von AWS CLI.
-
Installieren Sie kubectl auf Ihrem Computer. Dies ist nur erforderlich, um mit dem EKS Cluster zu interagieren und die Zielanwendung zu konfigurieren oder zu überwachen. Weitere Informationen finden Sie unter https://kubernetes.io/docs/tasks/tools/
. -
Die unterstützte Mindestversion von EKS ist 1.23.
Erstellen Sie eine Experimentrolle
Um ein Experiment durchzuführen, müssen Sie eine IAM Rolle für das Experiment konfigurieren. Weitere Informationen finden Sie unter IAM-Rollen für AWS FIS-Experimente. Die erforderlichen Berechtigungen für diese Rolle hängen von der Aktion ab, die Sie verwenden. Die AWS FIS erforderlichen Berechtigungen für Ihre Aktion finden Sie in den aws:eks:pod
Zielaktionen.
Das Kubernetes-Servicekonto konfigurieren
Konfigurieren Sie ein Kubernetes-Dienstkonto, um Experimente mit Zielen im angegebenen Kubernetes-Namespace durchzuführen. Im folgenden Beispiel lautet das Dienstkonto myserviceaccount
und der Namespace ist default
. Beachten Sie, dass default ist einer der Standard-Kubernetes-Namespaces.
Um Ihr Kubernetes-Dienstkonto zu konfigurieren
-
Erstellen Sie eine Datei mit dem Namen
rbac.yaml
und fügen Sie Folgendes hinzu.kind: ServiceAccount apiVersion: v1 metadata: namespace:
default
name:myserviceaccount
--- kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace:default
name:role-experiments
rules: - apiGroups: [""] resources: ["configmaps"] verbs: [ "get", "create", "patch", "delete"] - apiGroups: [""] resources: ["pods"] verbs: ["create", "list", "get", "delete", "deletecollection"] - apiGroups: [""] resources: ["pods/ephemeralcontainers"] verbs: ["update"] - apiGroups: [""] resources: ["pods/exec"] verbs: ["create"] - apiGroups: ["apps"] resources: ["deployments"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: bind-role-experiments namespace:default
subjects: - kind: ServiceAccount name:myserviceaccount
namespace:default
- apiGroup: rbac.authorization.k8s.io kind: User name:fis-experiment
roleRef: kind: Role name:role-experiments
apiGroup: rbac.authorization.k8s.io -
Führen Sie den folgenden Befehl aus.
kubectl apply -f rbac.yaml
Gewähren Sie IAM Benutzern und Rollen Zugriff auf Kubernetes APIs
Folgen Sie den Schritten, die in der Dokumentation unter IAMIdentitäten mit Kubernetes-Berechtigungen verknüpfen beschrieben werden. EKS
Wir empfehlen die Verwendung, Access Entries indem Sie die unter Gewähren Sie IAM Benutzern Zugriff auf Kubernetes mit Zugriffseinträgen erläuterten Schritte befolgen. EKS
aws eks create-access-entry \ --principal-arn arn:aws:iam::
123456789012
:role/fis-experiment-role
\ --usernamefis-experiment
\ --cluster-namemy-cluster
Wichtig
Um Zugriffseinträge nutzen zu können, muss der Authentifizierungsmodus des EKS Clusters entweder auf den Modus API_AND_CONFIG_MAP
oder API
konfiguriert werden.
Sie können auch den folgenden Befehl verwenden, um eine Identitätszuordnung zu erstellen. Weitere Informationen finden Sie in der eksctl Dokumentation unter IAMBenutzer und Rollen verwalten
eksctl create iamidentitymapping \ --arn arn:aws:iam::
123456789012
:role/fis-experiment-role
\ --usernamefis-experiment
\ --clustermy-cluster
Wichtig
Die Nutzung des eksctl-Toolkits zur Konfiguration von Identitätszuordnungen führt zur Erstellung von Einträgen innerhalb von. aws-auth
ConfigMap Es ist wichtig zu beachten, dass diese generierten Einträge die Aufnahme einer Pfadkomponente nicht unterstützen. Folglich darf die als Eingabe ARN bereitgestellte Datei kein Pfadsegment enthalten (z. B.arn:aws:iam::123456789012:role/service-role/fis-experiment-role
).
Pod-Container-Bilder
Die von bereitgestellten Pod-Container-Images AWS FIS werden bei Amazon gehostetECR. Wenn Sie auf ein Bild von Amazon verweisenECR, müssen Sie das vollständige Bild verwendenURI.
Das Pod-Container-Bild ist auch in der AWSECRöffentlichen Galerie
AWS-Region | Bild URI |
---|---|
US East (Ohio) | 051821878176.dkr.ecr.us-east-2.amazonaws.com/aws-fis-pod:0.1 |
USA Ost (Nord-Virginia) | 731367659002.dkr.ecr.us-east-1.amazonaws.com/aws-fis-pod:0.1 |
USA West (Nordkalifornien) | 080694859247.dkr.ecr.us-west-1.amazonaws.com/aws-fis-pod:0.1 |
USA West (Oregon) | 864386544765.dkr.ecr.us-west-2.amazonaws.com/aws-fis-pod:0.1 |
Africa (Cape Town) | 056821267933.dkr.ecr.af-south-1.amazonaws.com/aws-fis-pod:0.1 |
Asien-Pazifik (Hongkong) | 246405402639.dkr.ecr.ap-east-1.amazonaws.com/aws-fis-pod:0.1 |
Asien-Pazifik (Mumbai) | 524781661239.dkr.ecr.ap-south-1.amazonaws.com/aws-fis-pod:0.1 |
Asia Pacific (Seoul) | 526524659354.dkr.ecr.ap-northeast-2.amazonaws.com/aws-fis-pod:0.1 |
Asien-Pazifik (Singapur) | 316401638346.dkr.ecr.ap-southeast-1.amazonaws.com/aws-fis-pod:0.1 |
Asien-Pazifik (Sydney) | 488104106298.dkr.ecr.ap-southeast-2.amazonaws.com/aws-fis-pod:0.1 |
Asien-Pazifik (Tokio) | 635234321696.dkr.ecr.ap-northeast-1.amazonaws.com/aws-fis-pod:0.1 |
Canada (Central) | 490658072207.dkr.ecr.ca-central-1.amazonaws.com/aws-fis-pod:0.1 |
Europe (Frankfurt) | 713827034473.dkr.ecr.eu-central-1.amazonaws.com/aws-fis-pod:0.1 |
Europa (Irland) | 205866052826.dkr.ecr.eu-west-1.amazonaws.com/aws-fis-pod:0.1 |
Europa (London) | 327424803546.dkr.ecr.eu-west-2.amazonaws.com/aws-fis-pod:0.1 |
Europa (Milan) | 478809367036.dkr.ecr.eu-south-1.amazonaws.com/aws-fis-pod:0.1 |
Europa (Paris) | 154605889247.dkr.ecr.eu-west-3.amazonaws.com/aws-fis-pod:0.1 |
Europa (Spain) | 395402409451.dkr.ecr.eu-south-2.amazonaws.com/aws-fis-pod:0.1 |
Europa (Stockholm) | 263175118295.dkr.ecr.eu-north-1.amazonaws.com/aws-fis-pod:0.1 |
Naher Osten (Bahrain) | 065825543785.dkr.ecr.me-south-1.amazonaws.com/aws-fis-pod:0.1 |
Südamerika (São Paulo) | 767113787785.dkr.ecr.sa-east-1.amazonaws.com/aws-fis-pod:0.1 |
AWS GovCloud (US-Ost) | 246533647532.dkr.ecr.us-gov-east-1.amazonaws.com/aws-fis-pod:0.1 |
AWS GovCloud (US-West) | 246529956514.dkr.ecr.us-gov-west-1.amazonaws.com/aws-fis-pod:0.1 |
Beispiel für eine Versuchsvorlage
Im Folgenden finden Sie ein Beispiel für eine Versuchsvorlage für die aws:eks:pod-network-latency Aktion.
{ "description": "Add latency and jitter to the network interface for the target EKS pods", "targets": { "myPods": { "resourceType": "aws:eks:pod", "parameters": { "clusterIdentifier": "
mycluster
", "namespace": "default
", "selectorType": "labelSelector
", "selectorValue": "mylabel=mytarget
" }, "selectionMode": "COUNT(3)
" } }, "actions": { "EksPod-latency": { "actionId": "aws:eks:pod-network-latency", "description": "Add latency", "parameters": { "kubernetesServiceAccount": "myserviceaccount
", "duration": "PT5M
", "delayMilliseconds": "200
", "jitterMilliseconds": "10
", "sources": "0.0.0.0/0
" }, "targets": { "Pods": "myPods" } } }, "stopConditions": [ { "source": "none", } ], "roleArn": "arn:aws:iam::111122223333
:role/fis-experiment-role
", "tags": { "Name": "EksPodNetworkLatency" } }