Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan AWS FIS aws:eks: tindakan pod
Anda dapat menggunakan tindakan aws:eks:pod untuk menyuntikkan kesalahan ke Pods Kubernetes yang berjalan di cluster EKS Anda.
Ketika tindakan dimulai, FIS mengambil gambar wadah FIS Pod. Gambar ini kemudian digunakan untuk membuat Pod di cluster EKS yang ditargetkan. Pod yang baru dibuat bertanggung jawab untuk menyuntikkan, mengendalikan, dan memantau kesalahan. Untuk semua tindakan FIS EKS, kecuali untuk aws:eks:pod-delete, injeksi kesalahan dicapai melalui penggunaan wadah sementara
-
FIS membuat Pod FIS di cluster target yang ditentukan dalam template percobaan.
-
Pod FIS membuat wadah sementara di Pod Target di namespace yang sama dengan wadah target.
-
Wadah sementara menyuntikkan kesalahan dalam namespace wadah target.
-
Pod FIS mengontrol dan memantau injeksi kesalahan dari wadah sementara dan FIS mengontrol dan memantau Pod FIS.
Setelah percobaan selesai atau jika terjadi kesalahan, wadah sementara dan Pod FIS 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
bridgejaringan:aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
-
Tindakan berikut memerlukan izin root dalam wadah sementara.
aws:eks:pod-network-blackhole-port
aws:eks:pod-network-latency
aws:eks:pod-network-packet-loss
Wadah sementara akan mewarisi izinnya dari konteks keamanan Pod target. Jika Anda perlu menjalankan kontainer di Pod sebagai pengguna non-root, Anda dapat mengatur konteks keamanan terpisah untuk kontainer di Pod target.
-
Anda tidak dapat mengidentifikasi target tipe aws:eks:pod di template eksperimen menggunakan ARN sumber daya atau tag sumber daya. Anda harus mengidentifikasi target menggunakan parameter sumber daya yang diperlukan.
-
Tindakan aws:eks:pod-network-latency dan aws:eks:pod-network-packet-loss tidak boleh dijalankan secara paralel dan menargetkan Pod yang sama. Bergantung pada nilai
maxErrorsparameter yang Anda tentukan, tindakan dapat berakhir dalam keadaan selesai atau gagal:Jika
maxErrorsPercent0 (default), tindakan akan berakhir dalam keadaan gagal.Jika tidak, kegagalan akan menambah
maxErrorsPercentanggaran. Jika jumlah suntikan yang gagal tidak mencapai yang disediakanmaxErrors, tindakan akan berakhir dalam keadaan selesai.Anda dapat mengidentifikasi kegagalan ini dari log wadah sementara yang disuntikkan di Pod target. Ini akan gagal dengan
Exit Code: 16.
-
Tindakan aws:eks:pod-network-blackhole-port tidak boleh dijalankan secara paralel dengan tindakan lain yang menargetkan Pod yang sama dan menggunakan yang sama.
trafficTypeTindakan paralel menggunakan jenis lalu lintas yang berbeda didukung. -
FIS hanya dapat memantau status injeksi kesalahan ketika Pod target diatur ke
readOnlyRootFilesystem: false.securityContextTanpa 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 peran IAM. Untuk informasi selengkapnya, lihat Meng instal atau memperbarui AWS CLI.
-
Inst kubectl al di komputer Anda. Ini diperlukan hanya untuk berinteraksi dengan cluster EKS untuk mengkonfigurasi atau memantau aplikasi target. Untuk informasi selengkapnya, lihat https://kubernetes.io/docs/tasks/tools/
. -
Versi EKS minimum yang didukung adalah 1.30.
Buat peran eksperimen
Untuk menjalankan eksperimen, Anda perlu mengonfigurasi peran IAM untuk eksperimen tersebut. Untuk informasi selengkapnya, lihat Peran IAM untuk eksperimen AWS FIS. Izin yang diperlukan untuk peran ini tergantung pada tindakan yang Anda gunakan. Lihat tindakan AWS FIS yang ditarget aws:eks:pod kan 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 adalahdefault. Perhatikan bahwa itu default adalah salah satu ruang nama Kubernetes standar.
Untuk mengkonfigurasi akun layanan Kubernetes Anda
-
Buat file bernama
rbac.yamldan tambahkan yang berikut ini.kind: ServiceAccount apiVersion: v1 metadata: namespace:defaultname:myserviceaccount--- kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace:defaultname:role-experimentsrules: - 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:defaultsubjects: - kind: ServiceAccount name:myserviceaccountnamespace:default- apiGroup: rbac.authorization.k8s.io kind: User name:fis-experimentroleRef: kind: Role name:role-experimentsapiGroup: rbac.authorization.k8s.io -
Jalankan perintah berikut.
kubectl apply -f rbac.yaml
Berikan akses pengguna dan peran IAM ke API Kubernetes
Ikuti langkah-langkah yang dijelaskan dalam Meng aitkan Identitas IAM dengan Izin Kubernetes dalam dokumentasi. EKS
Opsi 1: Buat entri akses
Kami merekomendasikan penggunaan Access Entries. Anda dapat menggunakan perintah berikut untuk membuat Entri Akses yang mengaitkan peran IAM dengan pengguna Kubernetes. fis-experiment Untuk informasi selengkapnya, lihat Mem berikan akses pengguna IAM ke Kubernetes dengan entri akses EKS.
aws eks create-access-entry \ --principal-arn arn:aws:iam::123456789012:role/fis-experiment-role\ --usernamefis-experiment\ --cluster-namemy-cluster
penting
Untuk memanfaatkan entri akses, mode otentikasi cluster EKS harus dikonfigurasi ke API mode API_AND_CONFIG_MAP atau.
Opsi 2: Tambahkan entri ke aws-auth ConfigMap
Anda juga dapat menggunakan perintah berikut untuk membuat pemetaan identitas. Untuk informasi selengkapnya, lihat Mengelola pengguna dan peran IAM
eksctl create iamidentitymapping \ --arn arn:aws:iam::123456789012:role/fis-experiment-role\ --usernamefis-experiment\ --clustermy-cluster
penting
Memanfaatkan toolkit eksctl untuk mengonfigurasi pemetaan identitas akan menghasilkan pembuatan entri di dalam. aws-auth ConfigMap Penting untuk dicatat bahwa entri yang dihasilkan ini tidak mendukung penyertaan komponen jalur. Akibatnya, ARN yang disediakan sebagai input tidak boleh berisi segmen jalur (misalnya,arn:aws:iam::123456789012:role/service-role/fis-experiment-role).
Gambar wadah pod
Gambar wadah Pod yang disediakan oleh AWS FIS dihosting di Amazon ECR. Saat Anda mereferensikan gambar dari Amazon ECR, Anda harus menggunakan URI gambar lengkap.
Gambar wadah Pod juga tersedia di Galeri Pu blik AWS ECR
| Wilayah AWS | URI citra |
|---|---|
| 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 (Osaka) | 148336246925.dkr.ecr.ap-northeast-3.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 |
| Eropa (Zürich) | 604225987275.dkr.ecr.eu-central-2.amazonaws.com/aws-fis-pod:0.1 |
| Timur Tengah (Bahrain) | 065825543785.dkr.ecr.me-south-1.amazonaws.com/aws-fis-pod:0.1 |
| Timur Tengah (UEA) | 438374459301.dkr.ecr.me-central-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 (US-East) | 246533647532.dkr.ecr.us-gov-east-1.amazonaws.com/aws-fis-pod:0.1 |
| AWS GovCloud (US-West) | 246529956514.dkr.ecr.us-gov-west-1.amazonaws.com/aws-fis-pod:0.1 |
Contoh templat percobaan
Berikut ini adalah contoh template percobaan untuk aws:eks: latensi jaringan pod 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" } }