

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-Aktionen aws:eks:pod
<a name="eks-pod-actions"></a>

 Sie können die **aws:eks:pod-Aktionen verwenden, um Fehler in die Kubernetes-Pods** zu injizieren, die in Ihren EKS-Clustern ausgeführt werden. 

 [Wenn eine Aktion initiiert wird, ruft FIS das FIS-Pod-Container-Image ab.](eks-pod-actions.html#eks-pod-container-images) 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](fis-actions-reference.html#pod-delete), wird die Fehlerinjektion durch die Verwendung von [ephemeren Containern erreicht, einer Kubernetes-Funktion, die die Erstellung temporärer Container](https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/) innerhalb eines vorhandenen Pods ermöglicht. Der ephemere Container wird im selben Namespace wie der Zielcontainer gestartet und führt die gewünschten Fault-Injection-Aufgaben aus. Wenn kein Zielcontainer angegeben ist, wird der erste Container in der Pod-Spezifikation als Ziel ausgewählt. 

![](http://docs.aws.amazon.com/de_de/fis/latest/userguide/images/eks-actions.png)


1.  FIS erstellt den FIS-Pod in dem in der Experimentvorlage angegebenen Zielcluster. 

1.  Der FIS-Pod erstellt einen kurzlebigen Container im Ziel-Pod im selben Namespace wie der Zielcontainer. 

1.  Der ephemere Container fügt Fehler in den Namespace des Zielcontainers ein. 

1.  Der FIS-Pod steuert und überwacht die Fehlerinjektion des ephemeren Containers und FIS steuert und überwacht den FIS-Pod. 

 Nach Abschluss des Experiments oder wenn ein Fehler auftritt, werden der ephemere Behälter und der FIS-Pod entfernt. 

## Aktionen
<a name="supported-eks-pod-actions"></a>
+ [aws:eks:pod-cpu-stress](fis-actions-reference.md#pod-cpu-stress)
+ [aws:eks:pod-delete](fis-actions-reference.md#pod-delete)
+ [aws:eks:pod-io-stress](fis-actions-reference.md#pod-io-stress)
+ [aws:eks:pod-memory-stress](fis-actions-reference.md#pod-memory-stress)
+ [aws:eks:pod-network-blackhole-port](fis-actions-reference.md#pod-network-blackhole-port)
+ [aws:eks:pod-network-latency](fis-actions-reference.md#pod-network-latency)
+ [aws:eks:pod-network-packet-loss](fis-actions-reference.md#pod-network-packet-loss)

## Einschränkungen
<a name="eks-pod-limitations"></a>
+ 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](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/networking-networkmode.html) nicht:
  + aws:eks:pod-network-blackhole-port
  + aws:eks:pod-network-latency
  + aws:eks:pod-network-packet-loss
+ Für die folgenden Aktionen sind Root-Rechte innerhalb des kurzlebigen Containers erforderlich.
  + aws:eks:pod-network-blackhole-port
  + aws:eks:pod-network-latency
  + aws:eks:pod-network-packet-loss

  Der kurzlebige Container erbt seine Berechtigungen aus dem Sicherheitskontext des Ziel-Pods. Wenn Sie die Container im Pod als Nicht-Root-Benutzer ausführen müssen, können Sie separate Sicherheitskontexte für die Container im Ziel-Pod festlegen.
+ Sie können Ziele vom Typ **aws:eks:pod** in Ihrer Experimentvorlage nicht mithilfe von Ressourcen- oder Ressourcen-Tags identifizieren. ARNs Sie müssen Ziele anhand der erforderlichen Ressourcenparameter identifizieren.
+ Die Aktionen aws:eks: pod-network-latency und aws:eks: pod-network-packet-loss sollten nicht parallel ausgeführt werden und auf denselben Pod abzielen. Je nach Wert des von Ihnen angegebenen `maxErrors` 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 erreicht`maxErrors`, 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 verwenden. `trafficType` Parallele Aktionen, die unterschiedliche Verkehrsarten verwenden, werden unterstützt.
+ FIS kann den Status der Fehlerinjektion nur überwachen, wenn `securityContext` der Ziel-Pods auf `readOnlyRootFilesystem: false` eingestellt ist. Ohne diese Konfiguration schlagen alle EKS-Pod-Aktionen fehl.

## Voraussetzungen
<a name="eks-pod-requirements"></a>
+ Installieren Sie das 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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). 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](https://kubernetes.io/docs/tasks/tools/)/.
+ Die unterstützte Mindestversion von EKS ist 1.23.

## Erstellen Sie eine Experimentrolle
<a name="create-experiment-role-eks-pod"></a>

 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](getting-started-iam-service-role.md). Die erforderlichen Berechtigungen für diese Rolle hängen von der Aktion ab, die Sie verwenden. Die erforderlichen Berechtigungen für Ihre Aktion finden Sie in den [AWS FIS-Aktionen, die darauf abzielen `aws:eks:pod`](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#eks-actions-reference). 

## Das Kubernetes-Servicekonto konfigurieren
<a name="configure-service-account"></a>

Konfigurieren Sie ein Kubernetes-Dienstkonto, um Experimente mit Zielen im angegebenen Kubernetes-Namespace durchzuführen. Im folgenden Beispiel ist {{myserviceaccount}} das Dienstkonto und der Namespace. {{default}} Beachten Sie, dass default dies einer der Standard-Kubernetes-Namespaces ist.

**Um Ihr Kubernetes-Dienstkonto zu konfigurieren**

1. 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
   ```

1. Führen Sie den folgenden Befehl aus.

   ```
   kubectl apply -f rbac.yaml
   ```

## Gewähren Sie IAM-Benutzern und -Rollen Zugriff auf Kubernetes APIs
<a name="grant-k8s-access"></a>

Folgen Sie den Schritten, die in der Dokumentation unter [IAM-Identitäten mit Kubernetes-Berechtigungen verknüpfen](https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html#authentication-modes) beschrieben werden. **EKS**

### Option 1: Zugriffseinträge erstellen
<a name="grant-k8s-access-option-1"></a>

Wir empfehlen die Verwendung von **Access Entries**. Sie können den folgenden Befehl verwenden, um einen Zugriffseintrag zu erstellen, der die IAM-Rolle dem Kubernetes-Benutzer zuordnet. {{fis-experiment}} Weitere Informationen finden Sie unter [Gewähren Sie IAM-Benutzern Zugriff auf Kubernetes mit EKS-Zugriffseinträgen](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).

```
aws eks create-access-entry \
                 --principal-arn arn:aws:iam::{{123456789012}}:role/{{fis-experiment-role}} \
                 --username {{fis-experiment}} \
                 --cluster-name {{my-cluster}}
```

**Wichtig**  
Um Zugriffseinträge nutzen zu können, muss der Authentifizierungsmodus des EKS-Clusters entweder auf den `API_AND_CONFIG_MAP` Modus oder konfiguriert werden. `API`

### Option 2: Fügen Sie Einträge zur AWS-Auth hinzu ConfigMap
<a name="grant-k8s-access-option-2"></a>

Sie können auch den folgenden Befehl verwenden, um eine Identitätszuordnung zu erstellen. Weitere Informationen finden Sie in der Dokumentation zu **eksctl** unter [Manage IAM users and roles](https://eksctl.io/usage/iam-identity-mappings/).

```
eksctl create iamidentitymapping \
                 --arn arn:aws:iam::{{123456789012}}:role/{{fis-experiment-role}} \
                 --username {{fis-experiment}} \
                 --cluster {{my-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 der als Eingabe bereitgestellte ARN kein Pfadsegment enthalten (z. B.`arn:aws:iam::123456789012:role/service-role/fis-experiment-role`).

## Pod-Container-Bilder
<a name="eks-pod-container-images"></a>

Die von AWS FIS bereitgestellten Pod-Container-Images werden in Amazon ECR gehostet. Wenn Sie auf ein Bild von Amazon ECR verweisen, müssen Sie die vollständige Bild-URI verwenden.

Das Pod-Container-Image ist auch in der [AWS ECR Public Gallery](https://gallery.ecr.aws/aws-fis/aws-fis-pod) verfügbar.


| AWS-Region | Image-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 | 
| Asien-Pazifik (Osaka) | 148336246925.dkr.ecr.ap-northeast-3.amazonaws.com/aws-fis-pod:0.1 | 
| Asien-Pazifik (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 | 
| Europa (Zürich) | 604225987275.dkr.ecr.eu-central-2.amazonaws.com/aws-fis-pod:0.1 | 
| Middle East (Bahrain) | 065825543785.dkr.ecr.me-south-1.amazonaws.com/aws-fis-pod:0.1 | 
| Naher Osten (VAE) | 438374459301.dkr.ecr.me-central-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
<a name="example-eks-pod-experiment-template"></a>

Im Folgenden finden Sie ein Beispiel für eine Versuchsvorlage für die [aws:eks:pod-network-latency](fis-actions-reference.md#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"
    }
}
```