

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usa le azioni AWS FIS aws:eks:pod
<a name="eks-pod-actions"></a>

 Puoi utilizzare le azioni **aws:eks:pod** per inserire errori nei Kubernetes Pod in esecuzione nei tuoi cluster EKS. 

 [Quando viene avviata un'azione, FIS recupera l'immagine del contenitore FIS Pod.](eks-pod-actions.html#eks-pod-container-images) Questa immagine viene quindi utilizzata per creare un Pod nel cluster EKS di destinazione. Il Pod appena creato è responsabile dell'iniezione, del controllo e del monitoraggio del guasto. Per tutte le azioni FIS EKS, ad eccezione di [aws:eks:pod-delete](fis-actions-reference.html#pod-delete), l'iniezione dei guasti si ottiene mediante l'uso di contenitori [effimeri, una funzionalità di Kubernetes che consente la creazione di contenitori temporanei](https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/) all'interno di un Pod esistente. Il contenitore temporaneo viene avviato nello stesso namespace del contenitore di destinazione ed esegue le attività di fault injection desiderate. Se non viene specificato alcun contenitore di destinazione, il primo contenitore nella specifica Pod viene selezionato come destinazione. 

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


1.  FIS crea il pod FIS nel cluster di destinazione specificato nel modello di esperimento. 

1.  Il pod FIS crea un contenitore temporaneo nel Target Pod nello stesso namespace del contenitore di destinazione. 

1.  Il contenitore temporaneo inserisce errori nel namespace del contenitore di destinazione. 

1.  Il FIS Pod controlla e monitora l'iniezione dei guasti del contenitore temporaneo e il FIS controlla e monitora il FIS Pod. 

 Al termine dell'esperimento o in caso di errore, il contenitore temporaneo e il FIS Pod vengono rimossi. 

## Azioni
<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)

## Limitazioni
<a name="eks-pod-limitations"></a>
+ Le seguenti azioni non funzionano con: AWS Fargate
  + aws:eks:pod-network-blackhole-port
  + aws:eks:pod-network-latency
  + aws:eks:pod-network-packet-loss
+ Le seguenti azioni non supportano la [modalità `bridge` di rete](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/networking-networkmode.html):
  + aws:eks:pod-network-blackhole-port
  + aws:eks:pod-network-latency
  + aws:eks:pod-network-packet-loss
+ Le seguenti azioni richiedono i permessi di root all'interno del contenitore temporaneo.
  + aws:eks:pod-network-blackhole-port
  + aws:eks:pod-network-latency
  + aws:eks:pod-network-packet-loss

  Il contenitore temporaneo erediterà le sue autorizzazioni dal contesto di sicurezza del Pod di destinazione. Se devi eseguire i contenitori nel Pod come utente non root, puoi impostare contesti di sicurezza separati per i contenitori nel Pod di destinazione.
+ Non puoi identificare obiettivi di tipo **aws:eks:pod** nel tuo modello di esperimento utilizzando tag di risorse o risorse. ARNs È necessario identificare gli obiettivi utilizzando i parametri di risorsa richiesti.
+ Le azioni aws:eks: pod-network-latency e aws:eks: non pod-network-packet-loss devono essere eseguite in parallelo e indirizzate allo stesso Pod. A seconda del valore del `maxErrors` parametro specificato, l'azione può terminare con lo stato completato o fallito:
  + Se `maxErrorsPercent` è 0 (impostazione predefinita), l'azione terminerà in stato di errore.
  + In caso contrario, l'errore inciderà sul `maxErrorsPercent` budget. Se il numero di iniezioni fallite non raggiunge quello fornito`maxErrors`, l'azione finirà per essere completata.
  + È possibile identificare questi errori dai registri del contenitore effimero iniettato nel Pod di destinazione. `Exit Code: 16`Fallirà con.
+ L'azione aws:eks: non pod-network-blackhole-port deve essere eseguita in parallelo con altre azioni che hanno come target lo stesso Pod e lo utilizzano. `trafficType` Sono supportate azioni parallele che utilizzano diversi tipi di traffico.
+ Il FIS può monitorare lo stato dell'iniezione dei guasti solo quando il Pod `securityContext` di destinazione è impostato su. `readOnlyRootFilesystem: false` Senza questa configurazione, tutte le azioni EKS Pod falliranno.

## Requisiti
<a name="eks-pod-requirements"></a>
+ Installalo AWS CLI sul tuo computer. Questo è necessario solo se lo utilizzerai AWS CLI per creare ruoli IAM. Per ulteriori informazioni, consulta [Installazione o aggiornamento di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Installare **kubectl** sul computer. Ciò è necessario solo per interagire con il cluster EKS per configurare o monitorare l'applicazione di destinazione. Per ulteriori informazioni, consulta [https://kubernetes. io/docs/tasks/tools](https://kubernetes.io/docs/tasks/tools/)/.
+ La versione minima supportata di EKS è la 1.23.

## Crea un ruolo sperimentale
<a name="create-experiment-role-eks-pod"></a>

 Per eseguire un esperimento, devi configurare un ruolo IAM per l'esperimento. Per ulteriori informazioni, consulta [Ruoli IAM per AWS esperimenti FIS](getting-started-iam-service-role.md). Le autorizzazioni richieste per questo ruolo dipendono dall'azione che stai utilizzando. Fai riferimento alle [azioni AWS FIS mirate `aws:eks:pod`](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#eks-actions-reference) per trovare le autorizzazioni necessarie per la tua azione. 

## Configurazione dell'account di servizio Kubernetes
<a name="configure-service-account"></a>

Configura un account di servizio Kubernetes per eseguire esperimenti con obiettivi nello spazio dei nomi Kubernetes specificato. Nell'esempio seguente, l'account del servizio è e lo spazio dei nomi è. {{myserviceaccount}} {{default}} Tieni presente che default è uno dei namespace Kubernetes standard.

**Per configurare il tuo account di servizio Kubernetes**

1. Crea un file denominato `rbac.yaml` e aggiungi quanto segue.

   ```
   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. Eseguire il seguente comando seguente.

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

## Concedi agli utenti e ai ruoli IAM l'accesso a Kubernetes APIs
<a name="grant-k8s-access"></a>

Segui i passaggi spiegati in [Associare le identità IAM alle autorizzazioni Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html#authentication-modes) nella documentazione. **EKS**

### Opzione 1: creare voci di accesso
<a name="grant-k8s-access-option-1"></a>

Consigliamo l'uso di **Access Entries**. Puoi utilizzare il seguente comando per creare un Access Entry che associ il ruolo IAM all'utente Kubernetes. {{fis-experiment}} Per ulteriori informazioni, consulta [Concedere agli utenti IAM l'accesso a Kubernetes con le voci di accesso](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) EKS.

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

**Importante**  
Per sfruttare le voci di accesso, la modalità di autenticazione del cluster EKS deve essere configurata in modalità or. `API_AND_CONFIG_MAP` `API`

### Opzione 2: aggiungi voci a aws-auth ConfigMap
<a name="grant-k8s-access-option-2"></a>

Puoi anche usare il seguente comando per creare una mappatura dell'identità. Per ulteriori informazioni, consulta [Manage IAM users and roles](https://eksctl.io/usage/iam-identity-mappings/) nella documentazione di **eksctl**.

```
eksctl create iamidentitymapping \
                 --arn arn:aws:iam::{{123456789012}}:role/{{fis-experiment-role}} \
                 --username {{fis-experiment}} \
                 --cluster {{my-cluster}}
```

**Importante**  
L'utilizzo del toolkit eksctl per configurare le mappature delle identità comporterà la creazione di voci all'interno di. `aws-auth` ConfigMap È importante notare che queste voci generate non supportano l'inclusione di un componente del percorso. Di conseguenza, l'ARN fornito come input non deve contenere un segmento di percorso (ad es.). `arn:aws:iam::123456789012:role/service-role/fis-experiment-role`

## Immagini del contenitore Pod
<a name="eks-pod-container-images"></a>

Le immagini dei contenitori Pod fornite da AWS FIS sono ospitate in Amazon ECR. Quando fai riferimento a un'immagine da Amazon ECR, devi utilizzare l'URI completo dell'immagine.

L'immagine del contenitore Pod è disponibile anche nella [galleria pubblica AWS ECR](https://gallery.ecr.aws/aws-fis/aws-fis-pod).


| Regione AWS | URI immagine | 
| --- | --- | 
| Stati Uniti orientali (Ohio) | 051821878176.dkr.ecr.us-east-2.amazonaws.com/aws-fis-pod:0.1 | 
| Stati Uniti orientali (Virginia settentrionale) | 731367659002.dkr.ecr.us-east-1.amazonaws.com/aws-fis-pod:0.1 | 
| Stati Uniti occidentali (California settentrionale) | 080694859247.dkr.ecr.us-west-1.amazonaws.com/aws-fis-pod:0.1 | 
| Stati Uniti occidentali (Oregon) | 864386544765.dkr.ecr.us-west-2.amazonaws.com/aws-fis-pod:0.1 | 
| Africa (Città del Capo) | 056821267933.dkr.ecr.af-south-1.amazonaws.com/aws-fis-pod:0.1 | 
| Asia Pacifico (Hong Kong) | 246405402639.dkr.ecr.ap-east-1.amazonaws.com/aws-fis-pod:0.1 | 
| Asia Pacifico (Mumbai) | 524781661239.dkr.ecr.ap-south-1.amazonaws.com/aws-fis-pod:0.1 | 
| Asia Pacifico (Osaka) | 148336246925.dkr.ecr.ap-northeast-3.amazonaws.com/aws-fis-pod:0.1 | 
| Asia Pacifico (Seoul) | 526524659354.dkr.ecr.ap-northeast-2.amazonaws.com/aws-fis-pod:0.1 | 
| Asia Pacifico (Singapore) | 316401638346.dkr.ecr.ap-southeast-1.amazonaws.com/aws-fis-pod:0.1 | 
| Asia Pacifico (Sydney) | 488104106298.dkr.ecr.ap-southeast-2.amazonaws.com/aws-fis-pod:0.1 | 
| Asia Pacifico (Tokyo) | 635234321696.dkr.ecr.ap-northeast-1.amazonaws.com/aws-fis-pod:0.1 | 
| Canada (Centrale) | 490658072207.dkr.ecr.ca-central-1.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Francoforte) | 713827034473.dkr.ecr.eu-central-1.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Irlanda) | 205866052826.dkr.ecr.eu-west-1.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Londra) | 327424803546.dkr.ecr.eu-west-2.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Milano) | 478809367036.dkr.ecr.eu-south-1.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Parigi) | 154605889247.dkr.ecr.eu-west-3.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Spagna) | 395402409451.dkr.ecr.eu-south-2.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Stoccolma) | 263175118295.dkr.ecr.eu-north-1.amazonaws.com/aws-fis-pod:0.1 | 
| Europa (Zurigo) | 604225987275.dkr.ecr.eu-central-2.amazonaws.com/aws-fis-pod:0.1 | 
| Medio Oriente (Bahrein) | 065825543785.dkr.ecr.me-south-1.amazonaws.com/aws-fis-pod:0.1 | 
| Medio Oriente (Emirati Arabi Uniti) | 438374459301.dkr.ecr.me-central-1.amazonaws.com/aws-fis-pod:0.1 | 
| Sud America (San Paolo) | 767113787785.dkr.ecr.sa-east-1.amazonaws.com/aws-fis-pod:0.1 | 
| AWS GovCloud (Stati Uniti orientali) | 246533647532.dkr.ecr.us-gov-east-1.amazonaws.com/aws-fis-pod:0.1 | 
| AWS GovCloud (Stati Uniti occidentali) | 246529956514.dkr.ecr.us-gov-west-1.amazonaws.com/aws-fis-pod:0.1 | 

## Esempio di modello di esperimento
<a name="example-eks-pod-experiment-template"></a>

Di seguito è riportato un esempio di modello di esperimento per l'[aws:eks:pod-network-latency](fis-actions-reference.md#pod-network-latency)azione.

```
{
    "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"
    }
}
```