Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Utilice las acciones AWS FIS aws:eks:pod
Puede usar las acciones aws:eks:pod para introducir errores en los pods de Kubernetes que se ejecutan en sus clústeres. EKS
Cuando se inicia una acción, recupera la imagen del contenedor del pod. FIS FIS Luego, esta imagen se usa para crear un pod en el EKS clúster de destino. El módulo recién creado es responsable de inyectar, controlar y monitorizar la falla. Para todas FIS EKS las acciones, excepto las de aws:eks:pod-delete, esto se consigue mediante el uso de contenedores efímeros, una función de Kubernetes que permite crear contenedores
-
FIScrea el FIS pod en el clúster que se proporciona en la plantilla del experimento.
-
El FIS Pod crea un contenedor efímero en el Pod de destino.
-
El FIS Pod controla y monitorea la inyección de errores en el contenedor efímero y FIS controla y monitorea el Pod. FIS
Al finalizar el experimento o si se produce un error, se retiran el contenedor efímero y el FIS Pod.
Acciones
Limitaciones
-
Las siguientes acciones no funcionan con: AWS Fargate
aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
Las siguientes acciones no admiten el modo de red
bridge
:aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
No puedes identificar objetivos del tipo aws:eks:pod en la plantilla de experimento mediante el recurso o las etiquetas de recursosARNs. Debe identificar los destinos con los parámetros de recursos necesarios.
-
Las acciones
aws:eks:pod-network-latency
yaws:eks:pod-network-packet-loss
no deben ejecutarse en paralelo y tener como objetivo el mismo pod. Según el valor del parámetromaxErrors
que especifique, la acción puede terminar en estado completado o de error:Si
maxErrorsPercent
es 0 (predeterminado), la acción finalizará en estado de error.De lo contrario, el error se sumará al presupuesto de
maxErrorsPercent
. Si el número de inyecciones de error no alcanza losmaxErrors
indicados, la acción terminará en estado completado.Puede identificar estos errores a partir de los registros del contenedor efímero inyectado en el pod de destino. Producirá error con
Exit Code: 16
.
-
La acción
aws:eks:pod-network-blackhole-port
no debe ejecutarse en paralelo con otras acciones que tengan como objetivo el mismo pod y utilicen el mismotrafficType
. Se admiten acciones paralelas que utilicen diferentes tipos de tráfico. -
FISsolo puede monitorear el estado de la inyección de errores cuando el
securityContext
de los pods de destino está configurado en.readOnlyRootFilesystem: false
Sin esta configuración, todas las acciones del EKS pod fallarán.
Requisitos
-
Instálelo AWS CLI en su ordenador. Esto solo es necesario si va a utilizar el AWS CLI para crear IAM roles. Para obtener más información, consulte Instalación o actualización de la AWS CLI.
-
Instale kubectl en su equipo. Esto solo es necesario para interactuar con el EKS clúster y configurar o monitorear la aplicación de destino. Para obtener más información, consulte https://kubernetes.io/docs/tasks/tools/
. -
La versión mínima admitida de EKS es la 1.23.
Crea un rol experimental
Para ejecutar un experimento, debe configurar un IAM rol para el experimento. Para obtener más información, consulte Roles de IAM para los experimentos de AWS FIS. Los permisos necesarios para este rol dependen de la acción que utilices. Consulta las AWS FISacciones a las que se dirigen aws:eks:pod
para encontrar los permisos necesarios para tu acción.
Configurar la cuenta de servicio de Kubernetes
Configure una cuenta de servicio de Kubernetes para ejecutar experimentos con destinos en el espacio de nombres de Kubernetes especificado. En el siguiente ejemplo, la cuenta de servicio es myserviceaccount
y el espacio de nombres es default
. Tenga en cuenta que default es uno de los espacios de nombres estándar de Kubernetes.
Para configurar la cuenta de servicio de Kubernetes
-
Cree un archivo llamado
rbac.yaml
y agregue lo siguiente.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 -
Ejecute el siguiente comando de la .
kubectl apply -f rbac.yaml
Concede a los IAM usuarios y roles acceso a Kubernetes APIs
Siga los pasos que se explican en la sección Asociar IAM identidades a los permisos de Kubernetes, en la documentación. EKS
Te recomendamos que sigas Access Entries los pasos que se explican en Otorgar a IAM los usuarios acceso a Kubernetes con entradas de acceso. EKS
aws eks create-access-entry \ --principal-arn arn:aws:iam::
123456789012
:role/fis-experiment-role
\ --usernamefis-experiment
\ --cluster-namemy-cluster
importante
Para aprovechar las entradas de acceso, el modo de autenticación del EKS clúster debe configurarse en el API_AND_CONFIG_MAP
modo o. API
También puede usar el siguiente comando para crear un mapeo de identidades. Para obtener más información, consulte Administrar IAM usuarios y roles
eksctl create iamidentitymapping \ --arn arn:aws:iam::
123456789012
:role/fis-experiment-role
\ --usernamefis-experiment
\ --clustermy-cluster
importante
Al utilizar el kit de herramientas eksctl para configurar los mapeos de identidad, se crearán entradas dentro del. aws-auth
ConfigMap Es importante tener en cuenta que estas entradas generadas no admiten la inclusión de un componente de ruta. En consecuencia, la entrada ARN proporcionada no debe contener un segmento de ruta (por ejemplo,arn:aws:iam::123456789012:role/service-role/fis-experiment-role
).
Imágenes de contenedor de pods
Las imágenes del contenedor de pods que proporciona AWS FIS están alojadas en AmazonECR. Cuando hagas referencia a una imagen de AmazonECR, debes usar la imagen completaURI.
La imagen del contenedor de cápsulas también está disponible en la galería AWS ECR pública
Región de AWS | Imagen URI |
---|---|
US East (Ohio) | 051821878176.dkr.ecr.us-east-2.amazonaws.com/aws-fis-pod:0.1 |
Este de EE. UU. (Norte de Virginia) | 731367659002.dkr.ecr.us-east-1.amazonaws.com/aws-fis-pod:0.1 |
Oeste de EE. UU. (Norte de California) | 080694859247.dkr.ecr.us-west-1.amazonaws.com/aws-fis-pod:0.1 |
Oeste de EE. UU. (Oregón) | 864386544765.dkr.ecr.us-west-2.amazonaws.com/aws-fis-pod:0.1 |
África (Ciudad del Cabo) | 056821267933.dkr.ecr.af-south-1.amazonaws.com/aws-fis-pod:0.1 |
Asia-Pacífico (Hong Kong) | 246405402639.dkr.ecr.ap-east-1.amazonaws.com/aws-fis-pod:0.1 |
Asia Pacific (Bombay) | 524781661239.dkr.ecr.ap-south-1.amazonaws.com/aws-fis-pod:0.1 |
Asia-Pacífico (Seúl) | 526524659354.dkr.ecr.ap-northeast-2.amazonaws.com/aws-fis-pod:0.1 |
Asia-Pacífico (Singapur) | 316401638346.dkr.ecr.ap-southeast-1.amazonaws.com/aws-fis-pod:0.1 |
Asia-Pacífico (Sídney) | 488104106298.dkr.ecr.ap-southeast-2.amazonaws.com/aws-fis-pod:0.1 |
Asia-Pacífico (Tokio) | 635234321696.dkr.ecr.ap-northeast-1.amazonaws.com/aws-fis-pod:0.1 |
Canadá (centro) | 490658072207.dkr.ecr.ca-central-1.amazonaws.com/aws-fis-pod:0.1 |
Europa (Fráncfort) | 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 (Londres) | 327424803546.dkr.ecr.eu-west-2.amazonaws.com/aws-fis-pod:0.1 |
Europa (Milán) | 478809367036.dkr.ecr.eu-south-1.amazonaws.com/aws-fis-pod:0.1 |
Europa (París) | 154605889247.dkr.ecr.eu-west-3.amazonaws.com/aws-fis-pod:0.1 |
Europa (España) | 395402409451.dkr.ecr.eu-south-2.amazonaws.com/aws-fis-pod:0.1 |
Europa (Estocolmo) | 263175118295.dkr.ecr.eu-north-1.amazonaws.com/aws-fis-pod:0.1 |
Medio Oriente (Baréin) | 065825543785.dkr.ecr.me-south-1.amazonaws.com/aws-fis-pod:0.1 |
América del Sur (São Paulo) | 767113787785.dkr.ecr.sa-east-1.amazonaws.com/aws-fis-pod:0.1 |
AWS GovCloud (EE. UU.-Este) | 246533647532.dkr.ecr.us-gov-east-1.amazonaws.com/aws-fis-pod:0.1 |
AWS GovCloud (Estados Unidos-Oeste) | 246529956514.dkr.ecr.us-gov-west-1.amazonaws.com/aws-fis-pod:0.1 |
Ejemplo de plantilla de experimento
A continuación, se muestra un ejemplo de plantilla de experimento para la acción aws:eks:pod-network-latency.
{ "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" } }