

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
<a name="eks-pod-actions"></a>

 Kamu dapat menggunakan tindakan **aws:eks:pod** untuk menyuntikkan kesalahan ke dalam Pod Kubernetes yang berjalan di kluster EKS kamu. 

 Ketika sebuah tindakan dimulai, FIS mengambil gambar kontainer [FIS](eks-pod-actions.html#eks-pod-container-images) 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 action FIS EKS, kecuali [aws:eks:pod-delete](fis-actions-reference.html#pod-delete), injeksi kesalahan dicapai melalui penggunaan kontainer [ephemeral, sebuah fitur Kubernetes yang memungkinkan pembuatan kontainer](https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/) temporer di dalam Pod yang sudah ada. Wadah fana dimulai di namespace yang sama dengan wadah target dan menjalankan tugas injeksi kesalahan yang diinginkan. Jika tidak ada kontainer target yang ditentukan, kontainer pertama dalam spesifikasi Pod dipilih sebagai target. 

![\[Fault Injection Service workflow in EKS klaster, showing pod creation and fault injection process.\]](http://docs.aws.amazon.com/id_id/fis/latest/userguide/images/eks-actions.png)


1.  FIS membuat Pod FIS di cluster target yang ditentukan dalam template percobaan. 

1.  FIS Pod menciptakan sebuah kontainer sementara di Target Pod dalam namespace yang sama dengan kontainer target. 

1.  Wadah fana menyuntikkan kesalahan di namespace wadah target. 

1.  FIS Pod mengontrol dan memonitor injeksi kesalahan kontainer sementara dan kontrol FIS dan memonitor Pod FIS. 

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

## Tindakan
<a name="supported-eks-pod-actions"></a>
+ [aws:eks:pod-cpu-stress](fis-actions-reference.md#pod-cpu-stress)
+ [aws:eks:pod-delete](fis-actions-reference.md#pod-delete)
+ [aws:eks:pod-io-stress](fis-actions-reference.md#pod-io-stress)
+ [aws:eks:pod-memory-stress](fis-actions-reference.md#pod-memory-stress)
+ [aws:eks:pod-network-blackhole-port](fis-actions-reference.md#pod-network-blackhole-port)
+ [aws:eks:pod-network-latency](fis-actions-reference.md#pod-network-latency)
+ [aws:eks:pod-network-packet-loss](fis-actions-reference.md#pod-network-packet-loss)

## Batasan
<a name="eks-pod-limitations"></a>
+ 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](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/networking-networkmode.html):
  + 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

  Container ephemeral 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 templat eksperimen menggunakan tag sumber daya atau sumber daya ARNs . Anda harus mengidentifikasi target menggunakan parameter sumber daya yang diperlukan.
+ Actions aws:eks: pod-network-latency dan aws:eks: tidak 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 disediakan`maxErrors`, tindakan akan berakhir dalam keadaan selesai.
  + Anda dapat mengidentifikasi kegagalan ini dari log kontainer sementara yang disuntikkan di Pod target. Ini akan gagal dengan`Exit Code: 16`.
+ Action aws:eks: tidak pod-network-blackhole-port boleh dijalankan secara paralel dengan action lain yang menargetkan Pod yang sama dan menggunakan Pod yang sama. `trafficType` Tindakan paralel menggunakan jenis lalu lintas yang berbeda didukung.
+ FIS hanya dapat memantau status injeksi kesalahan ketika `securityContext` Pod target disetel ke`readOnlyRootFilesystem: false`. Tanpa konfigurasi ini, semua tindakan EKS Pod akan gagal.

## Persyaratan
<a name="eks-pod-requirements"></a>
+ Instal AWS CLI di komputer Anda. Ini diperlukan hanya jika Anda akan menggunakan AWS CLI untuk membuat peran IAM. Untuk informasi selengkapnya, lihat [Menginstal atau memperbarui AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Instal **kubectl** di komputer Anda. Ini diperlukan hanya untuk berinteraksi dengan cluster EKS untuk mengkonfigurasi atau memantau aplikasi target. Untuk informasi lebih lanjut, lihat [https://kubernetes. io/docs/tasks/tools](https://kubernetes.io/docs/tasks/tools/)/.
+ Versi EKS minimum yang didukung adalah 1.23.

## Buat peran eksperimen
<a name="create-experiment-role-eks-pod"></a>

 Untuk menjalankan eksperimen, Anda perlu mengonfigurasi peran IAM untuk eksperimen. Untuk informasi selengkapnya, lihat [Peran IAM untuk eksperimen AWS FIS](getting-started-iam-service-role.md). Izin yang diperlukan untuk peran ini bergantung pada tindakan yang Anda gunakan. Lihat [tindakan AWS FIS yang menargetkan `aws:eks:pod`](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#eks-actions-reference) untuk menemukan izin yang diperlukan untuk tindakan Anda. 

## Konfigurasikan akun layanan Kubernetes
<a name="configure-service-account"></a>

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 ini adalah salah satu ruang nama Kubernetes standar.

**Untuk mengonfigurasi akun layanan Kubernetes**

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
   ```

1. Jalankan perintah berikut.

   ```
   kubectl apply -f rbac.yaml
   ```

## Berikan akses kepada pengguna dan peran IAM ke Kubernetes APIs
<a name="grant-k8s-access"></a>

Ikuti langkah-langkah yang dijelaskan dalam [Identitas IAM Asosiasi dengan Izin Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html#authentication-modes) dalam dokumentasi. **EKS**

### Opsi 1: Buat entri akses
<a name="grant-k8s-access-option-1"></a>

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 [Berikan akses kepada pengguna IAM ke Kubernetes dengan entri akses](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) EKS.

```
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 kluster EKS harus dikonfigurasi ke mode `API_AND_CONFIG_MAP` atau`API`.

### Opsi 2: Tambahkan entri ke aws-auth ConfigMap
<a name="grant-k8s-access-option-2"></a>

Anda juga dapat menggunakan perintah berikut untuk membuat pemetaan identitas. Untuk informasi selengkapnya, lihat [Mengelola pengguna dan peran IAM](https://eksctl.io/usage/iam-identity-mappings/) 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, ARN yang disediakan sebagai input tidak boleh berisi segmen jalur (misalnya,`arn:aws:iam::123456789012:role/service-role/fis-experiment-role`).

## Gambar kontainer pod
<a name="eks-pod-container-images"></a>

Gambar kontainer Pod yang disediakan oleh AWS FIS di-host di Amazon ECR. Saat Anda mereferensikan gambar dari Amazon ECR, Anda harus menggunakan URI gambar lengkap.

Gambar kontainer Pod juga tersedia di [AWS ECR Public Gallery](https://gallery.ecr.aws/aws-fis/aws-fis-pod).


| 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 (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
<a name="example-eks-pod-experiment-template"></a>

Berikut ini adalah contoh template eksperimen untuk [aws:eks:pod-network-latency](fis-actions-reference.md#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"
    }
}
```