Gunakan tindakan AWS FIS aws:eks:pod - AWS Layanan Injeksi Kesalahan

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan tindakan AWS FIS aws:eks:pod

Anda dapat menggunakan tindakan aws:eks:pod untuk menyuntikkan kesalahan ke dalam pod Kubernetes yang berjalan di cluster Anda. EKS

Ketika sebuah tindakan dimulai, FIS mengambil image kontainer FIS Pod. Gambar ini kemudian digunakan untuk membuat pod di EKS cluster yang ditargetkan. Pod yang baru dibuat bertanggung jawab untuk menyuntikkan, mengendalikan, dan memantau kesalahan. Untuk semua FIS EKS tindakan, kecuali dari aws:eks:pod-delete, hal ini dicapai melalui penggunaan kontainer ephemeral, sebuah fitur Kubernetes yang memungkinkan pembuatan kontainer sementara di dalam pod yang sudah ada. Container ephemeral mengeksekusi tugas injeksi kesalahan yang diinginkan di Target Pod.

Diagram showing FIS Pod creation and fault injection process in an EKS Klaster environment.
  1. FISmembuat FIS Pod di cluster yang disediakan dalam template eksperimen.

  2. FISPod menciptakan sebuah kontainer sementara di Target Pod.

  3. FISPod mengontrol dan memonitor injeksi kesalahan dari container sementara dan FIS mengontrol dan memonitor Pod. FIS

Setelah percobaan selesai atau jika terjadi kesalahan, kontainer sementara dan FIS Pod akan dihapus.

Tindakan

Batasan

  • Tindakan berikut tidak berfungsi dengan AWS Fargate:

    • aws:eks:pod-network-blackhole-port

    • aws:eks:pod-network-latency

    • aws:eks:pod-network-packet-loss

  • Tindakan berikut tidak mendukung mode bridge jaringan:

    • aws:eks:pod-network-blackhole-port

    • aws:eks:pod-network-latency

    • aws:eks:pod-network-packet-loss

  • Anda tidak dapat mengidentifikasi target tipe aws:eks:pod di templat eksperimen menggunakan tag sumber daya atau sumber dayaARNs. Anda harus mengidentifikasi target menggunakan parameter sumber daya yang diperlukan.

  • Tindakan aws:eks:pod-network-latency dan tidak aws:eks:pod-network-packet-loss boleh dijalankan secara paralel dan menargetkan pod yang sama. Bergantung pada nilai maxErrors parameter yang Anda tentukan, tindakan dapat berakhir dengan keadaan selesai atau gagal:

    • Jika maxErrorsPercent 0 (default), tindakan akan berakhir dalam keadaan gagal.

    • Jika tidak, kegagalan akan menambah maxErrorsPercent anggaran. Jika jumlah suntikan yang gagal tidak mencapai yang disediakanmaxErrors, tindakan akan berakhir dalam keadaan selesai.

    • Anda dapat mengidentifikasi kegagalan ini dari log wadah fana yang disuntikkan di pod target. Ini akan gagal denganExit Code: 16.

  • Tindakan tidak aws:eks:pod-network-blackhole-port boleh dijalankan secara paralel dengan tindakan lain yang menargetkan pod yang sama dan menggunakan yang samatrafficType. Tindakan paralel menggunakan jenis lalu lintas yang berbeda didukung.

  • FIShanya dapat memantau status injeksi kesalahan ketika pod target disetel kereadOnlyRootFilesystem: false. securityContext Tanpa konfigurasi ini, semua tindakan EKS pod akan gagal.

Persyaratan

  • Instal AWS CLI di komputer Anda. Ini diperlukan hanya jika Anda akan menggunakan AWS CLI untuk membuat IAM peran. Untuk informasi selengkapnya, lihat Menginstal atau memperbarui AWS CLI.

  • Instal kubectl di komputer Anda. Ini diperlukan hanya untuk berinteraksi dengan EKS cluster untuk mengkonfigurasi atau memantau aplikasi target. Untuk informasi lebih lanjut, lihat https://kubernetes.io/docs/tasks/tools/.

  • Versi minimum yang didukung EKS adalah 1.23.

Buat peran eksperimen

Untuk menjalankan eksperimen, Anda perlu mengonfigurasi IAM peran untuk eksperimen. Untuk informasi selengkapnya, lihat Peran IAM untuk eksperimen AWS FIS. Izin yang diperlukan untuk peran ini bergantung pada tindakan yang Anda gunakan. Lihat AWS FIStindakan yang menargetkan aws:eks:pod untuk menemukan izin yang diperlukan untuk tindakan Anda.

Konfigurasikan akun layanan Kubernetes

Konfigurasikan akun layanan Kubernetes untuk menjalankan eksperimen dengan target di namespace Kubernetes yang ditentukan. Dalam contoh berikut, akun layanan adalah myserviceaccount dan namespace adalah default. Perhatikan bahwa default adalah salah satu ruang nama Kubernetes standar.

Untuk mengonfigurasi akun layanan Kubernetes Anda
  1. Buat file bernama rbac.yaml dan tambahkan yang berikut ini.

    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
  2. Jalankan perintah berikut.

    kubectl apply -f rbac.yaml

Berikan akses IAM kepada pengguna dan peran ke Kubernetes APIs

Ikuti langkah-langkah yang dijelaskan dalam IAMIdentitas Asosiasi dengan Izin Kubernetes dalam dokumentasi. EKS

Sebaiknya gunakan Access Entries dengan mengikuti langkah-langkah yang dijelaskan di Grant IAM pengguna akses ke Kubernetes dengan EKS entri akses.

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

Untuk memanfaatkan entri akses, mode otentikasi EKS cluster harus dikonfigurasi ke mode API_AND_CONFIG_MAP atauAPI.

Anda juga dapat menggunakan perintah berikut untuk membuat pemetaan identitas. Untuk informasi selengkapnya, lihat Mengelola IAM pengguna dan peran dalam eksctl dokumentasi.

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

Memanfaatkan toolkit eksctl untuk mengonfigurasi pemetaan identitas akan menghasilkan pembuatan entri di dalam file. aws-auth ConfigMap Penting untuk dicatat bahwa entri yang dihasilkan ini tidak mendukung penyertaan komponen jalur. Akibatnya, input yang ARN disediakan tidak boleh berisi segmen jalur (misalnya,arn:aws:iam::123456789012:role/service-role/fis-experiment-role).

Gambar kontainer pod

Gambar kontainer pod yang AWS FIS disediakan oleh di-host di AmazonECR. Saat Anda mereferensikan gambar dari AmazonECR, Anda harus menggunakan gambar lengkapURI.

Gambar kontainer pod juga tersedia di Galeri AWS ECR Publik.

Wilayah AWS Gambar URI
AS Timur (Ohio) 051821878176.dkr.ecr.us-east-2.amazonaws.com/aws-fis-pod:0.1
AS Timur (Virginia Utara) 731367659002.dkr.ecr.us-east-1.amazonaws.com/aws-fis-pod:0.1
AS Barat (California Utara) 080694859247.dkr.ecr.us-west-1.amazonaws.com/aws-fis-pod:0.1
AS Barat (Oregon) 864386544765.dkr.ecr.us-west-2.amazonaws.com/aws-fis-pod:0.1
Afrika (Cape Town) 056821267933.dkr.ecr.af-south-1.amazonaws.com/aws-fis-pod:0.1
Asia Pasifik (Hong Kong) 246405402639.dkr.ecr.ap-east-1.amazonaws.com/aws-fis-pod:0.1
Asia Pasifik (Mumbai) 524781661239.dkr.ecr.ap-south-1.amazonaws.com/aws-fis-pod:0.1
Asia Pasifik (Seoul) 526524659354.dkr.ecr.ap-northeast-2.amazonaws.com/aws-fis-pod:0.1
Asia Pasifik (Singapura) 316401638346.dkr.ecr.ap-southeast-1.amazonaws.com/aws-fis-pod:0.1
Asia Pasifik (Sydney) 488104106298.dkr.ecr.ap-southeast-2.amazonaws.com/aws-fis-pod:0.1
Asia Pasifik (Tokyo) 635234321696.dkr.ecr.ap-northeast-1.amazonaws.com/aws-fis-pod:0.1
Kanada (Pusat) 490658072207.dkr.ecr.ca-central-1.amazonaws.com/aws-fis-pod:0.1
Eropa (Frankfurt) 713827034473.dkr.ecr.eu-central-1.amazonaws.com/aws-fis-pod:0.1
Eropa (Irlandia) 205866052826.dkr.ecr.eu-west-1.amazonaws.com/aws-fis-pod:0.1
Eropa (London) 327424803546.dkr.ecr.eu-west-2.amazonaws.com/aws-fis-pod:0.1
Eropa (Milan) 478809367036.dkr.ecr.eu-south-1.amazonaws.com/aws-fis-pod:0.1
Eropa (Paris) 154605889247.dkr.ecr.eu-west-3.amazonaws.com/aws-fis-pod:0.1
Eropa (Spanyol) 395402409451.dkr.ecr.eu-south-2.amazonaws.com/aws-fis-pod:0.1
Eropa (Stockholm) 263175118295.dkr.ecr.eu-north-1.amazonaws.com/aws-fis-pod:0.1
Timur Tengah (Bahrain) 065825543785.dkr.ecr.me-south-1.amazonaws.com/aws-fis-pod:0.1
Amerika Selatan (Sao Paulo) 767113787785.dkr.ecr.sa-east-1.amazonaws.com/aws-fis-pod:0.1
AWS GovCloud (AS-Timur) 246533647532.dkr.ecr.us-gov-east-1.amazonaws.com/aws-fis-pod:0.1
AWS GovCloud (AS-Barat) 246529956514.dkr.ecr.us-gov-west-1.amazonaws.com/aws-fis-pod:0.1

Contoh template percobaan

Berikut ini adalah contoh template eksperimen untuk aws:eks:pod-network-latency tindakan tersebut.

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