Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisez les actions AWS FIS aws:eks:pod
Vous pouvez utiliser les actions aws:eks:pod pour injecter des erreurs dans les pods Kubernetes exécutés dans vos clusters EKS.
Actions
Limites
-
Les actions suivantes ne fonctionnent pas avec AWS Fargate :
aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
Les actions suivantes ne sont pas compatibles avec le mode
bridge
réseau :aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
Vous ne pouvez pas identifier de cibles de type aws:eks:pod dans votre modèle d'expérience à l'aide d'ARN ou de balises de ressource. Vous devez identifier les cibles à l'aide des paramètres de ressources requis.
-
Les actions
aws:eks:pod-network-latency
neaws:eks:pod-network-packet-loss
doivent pas être exécutées en parallèle et cibler le même pod. Selon la valeur dumaxErrors
paramètre que vous spécifiez, l'action peut se terminer en état terminé ou en échec :Si la valeur
maxErrorsPercent
est 0 (valeur par défaut), l'action se terminera par un échec.Dans le cas contraire, l'échec alourdira le
maxErrorsPercent
budget. Si le nombre d'injections échouées n'atteint pas le nombre indiquémaxErrors
, l'action sera terminée.Vous pouvez identifier ces défaillances à partir des journaux du conteneur éphémère injecté dans le pod cible. Cela échouera avec
Exit Code: 16
.
-
L'action ne
aws:eks:pod-network-blackhole-port
doit pas être exécutée en parallèle avec d'autres actions qui ciblent le même pod et l'utilisenttrafficType
. Les actions parallèles utilisant différents types de trafic sont prises en charge. -
Le FIS ne peut surveiller l'état de l'injection de défauts que
securityContext
lorsque le pod cible est réglé sur.readOnlyRootFilesystem: false
Sans cette configuration, toutes les actions du pod EKS échoueront.
Prérequis
-
Installez-le AWS CLI sur votre ordinateur. Cela n'est nécessaire que si vous comptez utiliser le AWS CLI pour créer des rôles IAM. Pour plus d'informations, consultez la section Installation ou mise à jour du AWS CLI.
-
Installer kubectl sur votre ordinateur. Cela n'est nécessaire que pour interagir avec le cluster EKS afin de configurer ou de surveiller l'application cible. Pour plus d'informations, consultez https://kubernetes.io/docs/tasks/tools/
. -
La version minimale prise en charge d'EKS est 1.23.
Création d'un rôle de service pour le compte de service Kubernetes
Créez un rôle IAM à utiliser en tant que rôle de service. Pour plus d’informations, consultez Rôles IAM pour les expériences AWS FIS.
Configuration du compte de service Kubernetes
Configurez un compte de service Kubernetes pour exécuter des tests avec des cibles dans l'espace de noms Kubernetes spécifié. Dans l'exemple suivant, le compte de service est
Notez qu'il default s'agit de l'un des espaces de noms Kubernetes standard.myserviceaccount
et l'espace de noms est par défaut.
Pour configurer votre compte de service Kubernetes
-
Créez un fichier nommé
rbac.yaml
et ajoutez ce qui suit.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 -
Exécutez la commande suivante.
kubectl apply -f rbac.yaml
Associez votre rôle d'expérience à l'utilisateur de Kubernetes
Utilisez la commande suivante pour créer un mappage d'identité. Pour plus d'informations, consultez la section Gérer les utilisateurs et les rôles IAM
eksctl create iamidentitymapping \ --arn arn:aws:iam::
123456789012
:role/fis-experiment-role
\ --usernamefis-experiment
\ --clustermy-cluster
Images du conteneur Pod
Les images du conteneur de pods fournies par AWS FIS sont hébergées sur Amazon ECR. Lorsque vous référencez une image depuis Amazon ECR, vous devez utiliser l'URI de l'image complète.
Région AWS | URI de l'image |
---|---|
USA Est (Ohio) | 051821878176.dkr.ecr.us-east-2.amazonaws.com/aws-fis-pod:0.1 |
USA Est (Virginie du Nord) | 731367659002.dkr.ecr.us-east-1.amazonaws.com/aws-fis-pod:0.1 |
USA Ouest (Californie du Nord) | 080694859247.dkr.ecr.us-west-1.amazonaws.com/aws-fis-pod:0.1 |
USA Ouest (Oregon) | 864386544765.dkr.ecr.us-west-2.amazonaws.com/aws-fis-pod:0.1 |
Afrique (Le Cap) | 056821267933.dkr.ecr.af-south-1.amazonaws.com/aws-fis-pod:0.1 |
Asie-Pacifique (Hong Kong) | 246405402639.dkr.ecr.ap-east-1.amazonaws.com/aws-fis-pod:0.1 |
Asie-Pacifique (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 |
Asie-Pacifique (Singapour) | 316401638346.dkr.ecr.ap-southeast-1.amazonaws.com/aws-fis-pod:0.1 |
Asie-Pacifique (Sydney) | 488104106298.dkr.ecr.ap-southeast-2.amazonaws.com/aws-fis-pod:0.1 |
Asie-Pacifique (Tokyo) | 635234321696.dkr.ecr.ap-northeast-1.amazonaws.com/aws-fis-pod:0.1 |
Canada (Centre) | 490658072207.dkr.ecr.ca-central-1.amazonaws.com/aws-fis-pod:0.1 |
Europe (Francfort) | 713827034473.dkr.ecr.eu-central-1.amazonaws.com/aws-fis-pod:0.1 |
Europe (Irlande) | 205866052826.dkr.ecr.eu-west-1.amazonaws.com/aws-fis-pod:0.1 |
Europe (Londres) | 327424803546.dkr.ecr.eu-west-2.amazonaws.com/aws-fis-pod:0.1 |
Europe (Milan) | 478809367036.dkr.ecr.eu-south-1.amazonaws.com/aws-fis-pod:0.1 |
Europe (Paris) | 154605889247.dkr.ecr.eu-west-3.amazonaws.com/aws-fis-pod:0.1 |
Europe (Stockholm) | 263175118295.dkr.ecr.eu-north-1.amazonaws.com/aws-fis-pod:0.1 |
Moyen-Orient (Bahreïn) | 065825543785.dkr.ecr.me-south-1.amazonaws.com/aws-fis-pod:0.1 |
Amérique du Sud (São Paulo) | 767113787785.dkr.ecr.sa-east-1.amazonaws.com/aws-fis-pod:0.1 |
AWS GovCloud (USA Est) | 246533647532.dkr.ecr.us-gov-east-1.amazonaws.com/aws-fis-pod:0.1 |
AWS GovCloud (US-Ouest) | 246529956514.dkr.ecr.us-gov-west-1.amazonaws.com/aws-fis-pod:0.1 |
Exemple de modèle d'expérience
Voici un exemple de modèle d'expérience pour l'aws:eks:pod-network-latencyaction.
{ "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" } }