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
Puoi usare le azioni aws:eks:pod per inserire errori nei pod Kubernetes in esecuzione nei tuoi cluster. EKS
Quando viene avviata un'azione, recupera l'immagine del contenitore Pod. FIS FIS Questa immagine viene quindi utilizzata per creare un pod nel cluster di destinazioneEKS. Il pod appena creato è responsabile dell'iniezione, del controllo e del monitoraggio del guasto. Per tutte le FIS EKS azioni, ad eccezione di aws:eks:pod-delete, ciò si ottiene tramite l'uso di contenitori effimeri, una funzionalità di Kubernetes che consente la creazione di contenitori temporanei
-
FIScrea il FIS Pod nel cluster fornito nel modello dell'esperimento.
-
Il FIS Pod crea un contenitore effimero nel Target Pod.
-
Il FIS Pod controlla e monitora l'iniezione dei guasti del contenitore temporaneo e controlla e monitora il Pod. FIS FIS
Al termine dell'esperimento o in caso di errore, il contenitore temporaneo e il Pod vengono rimossi. FIS
Azioni
Limitazioni
-
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:aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
Non puoi identificare obiettivi di tipo aws:eks:pod nel tuo modello di esperimento utilizzando i tag delle risorse o delle risorseARNs. È necessario identificare gli obiettivi utilizzando i parametri di risorsa richiesti.
-
Le azioni
aws:eks:pod-network-latency
nonaws:eks:pod-network-packet-loss
devono essere eseguite in parallelo e indirizzate allo stesso pod. A seconda del valore delmaxErrors
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 fornitomaxErrors
, 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 non
aws:eks:pod-network-blackhole-port
deve essere eseguita parallelamente ad altre azioni che hanno come target lo stesso pod e lo utilizzanotrafficType
. Sono supportate azioni parallele che utilizzano tipi di traffico diversi. -
FISpuò monitorare lo stato dell'iniezione dei guasti solo quando il pod
securityContext
di destinazione è impostatoreadOnlyRootFilesystem: false
su. Senza questa configurazione, tutte le azioni del EKS pod falliranno.
Requisiti
-
Installalo AWS CLI sul tuo computer. Questo è necessario solo se lo utilizzerai AWS CLI per creare IAM ruoli. Per ulteriori informazioni, vedere Installazione o aggiornamento di AWS CLI.
-
Installare kubectl sul computer. Ciò è necessario solo per interagire con il EKS cluster per configurare o monitorare l'applicazione di destinazione. Per ulteriori informazioni, vedere https://kubernetes.io/docs/tasks/tools/
. -
La versione minima supportata di EKS è la 1.23.
Crea un ruolo sperimentale
Per eseguire un esperimento, è necessario configurare un IAM ruolo per l'esperimento. Per ulteriori informazioni, consulta Ruoli IAM per AWS esperimenti FIS. Le autorizzazioni richieste per questo ruolo dipendono dall'azione che stai utilizzando. Fai riferimento alle AWS FISazioni mirate aws:eks:pod
per trovare le autorizzazioni necessarie per la tua azione.
Configurazione dell'account di servizio Kubernetes
Configura un account di servizio Kubernetes per eseguire esperimenti con obiettivi nello spazio dei nomi Kubernetes specificato. Nell'esempio seguente, l'account di servizio è myserviceaccount
e lo spazio dei nomi è default
. Nota che default è uno dei namespace Kubernetes standard.
Per configurare il tuo account di servizio Kubernetes
-
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 -
Esegui il comando seguente.
kubectl apply -f rbac.yaml
Concedi a IAM utenti e ruoli l'accesso a Kubernetes APIs
Segui i passaggi spiegati in Associare IAM le identità alle autorizzazioni Kubernetes nella documentazione. EKS
Ti consigliamo di utilizzare seguendo i passaggi Access Entries spiegati in Concedere IAM agli utenti l'accesso a Kubernetes con le voci di accesso. EKS
aws eks create-access-entry \ --principal-arn arn:aws:iam::
123456789012
:role/fis-experiment-role
\ --usernamefis-experiment
\ --cluster-namemy-cluster
Importante
Per sfruttare le voci di accesso, la modalità di autenticazione del EKS cluster deve essere configurata in modalità o. API_AND_CONFIG_MAP
API
È inoltre possibile utilizzare il comando seguente per creare una mappatura delle identità. Per ulteriori informazioni, consulta Gestire IAM utenti e ruoli
eksctl create iamidentitymapping \ --arn arn:aws:iam::
123456789012
:role/fis-experiment-role
\ --usernamefis-experiment
\ --clustermy-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'input 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
Le immagini del contenitore pod fornite da AWS FIS sono ospitate in AmazonECR. Quando fai riferimento a un'immagine da AmazonECR, devi utilizzare l'immagine completaURI.
L'immagine del contenitore del pod è disponibile anche nella Galleria AWS ECR pubblica
Regione AWS | Immagine URI |
---|---|
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 Pacific (Seul) | 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 |
Medio Oriente (Bahrein) | 065825543785.dkr.ecr.me-south-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
Di seguito è riportato un esempio di modello di esperimento per l'aws:eks:pod-network-latencyazione.
{ "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" } }