

 **Bantu tingkatkan halaman ini** 

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

Untuk berkontribusi pada panduan pengguna ini, pilih **Edit halaman ini pada GitHub** tautan yang terletak di panel kanan setiap halaman.

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

# Kelola perangkat EFA di Amazon EKS
<a name="device-management-efa"></a>

 [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) (EFA) adalah perangkat jaringan untuk instans Amazon EC2 yang memungkinkan komunikasi antar simpul berkinerja tinggi dan RDMA (Remote Direct Memory Access) untuk kecerdasan buatan, pembelajaran mesin, dan beban kerja Komputasi Kinerja Tinggi (HPC). *Amazon EKS mendukung dua mekanisme untuk mengelola perangkat EFA di kluster EKS: *driver EFA Dynamic Resource Allocation (DRA) (DRANET)* dan plugin perangkat EFA.*

Disarankan untuk menggunakan driver DRA EFA (DRANET) untuk penerapan baru pada kluster EKS yang menjalankan Kubernetes versi 1.34 atau yang lebih baru dengan grup node terkelola EKS atau grup node yang dikelola sendiri. Driver EFA DRA memungkinkan Anda untuk mengonfigurasi alokasi sadar topologi yang memasangkan antarmuka EFA dengan GPU lokal topologis atau perangkat Neuron mereka, dan mendukung berbagi perangkat antar Pod.

Driver EFA DRA tidak didukung dengan Karpenter atau Mode Otomatis EKS. Gunakan [plugin perangkat EFA dengan](#eks-efa-device-plugin) Karpenter dan Mode Otomatis EKS. Plugin perangkat EFA juga tetap didukung untuk grup node terkelola EKS dan node yang dikelola sendiri.

## Driver EFA DRA vs. plugin perangkat EFA
<a name="eks-efa-dra-vs-device-plugin"></a>


| Fitur | Pengemudi EFA DRA | Plugin perangkat EFA | 
| --- | --- | --- | 
| Versi Kubernetes minimum | 1,34 | Semua versi EKS-supported Kubernetes | 
| EKS Komputasi | Grup node terkelola, node yang dikelola sendiri | Mode Otomatis EKS, Karpenter, grup simpul terkelola, node yang dikelola sendiri | 
| EKS-optimized AMI | AL2023 (NVIDIA, Neuron), Bottlerocket | AL2023 (NVIDIA, Neuron), Bottlerocket | 
| Iklan perangkat | Atribut kaya melalui `ResourceSlice` objek termasuk jenis perangkat, topologi, dan lokalitas PCIe | Jumlah bilangan bulat dari sumber daya yang `vpc.amazonaws.com/efa` diperluas | 
| GPU-EFA afinitas | DRA-native kesadaran topologi | Kesadaran topologi otomatis (hanya AMI EKS-optimized AL2023) | 
| Neuron-EFA afinitas | DRA-native kesadaran topologi | Kesadaran topologi otomatis (hanya AMI EKS-optimized AL2023) | 
| Berbagi perangkat | Beberapa Pod dapat berbagi perangkat EFA yang sama melalui referensi bersama `ResourceClaim` | Tidak didukung. Setiap perangkat EFA secara eksklusif dialokasikan ke satu Pod. | 

## Membuat node EKS dengan antarmuka EFA
<a name="eks-efa-nodes"></a>

Saat Anda membuat node EKS dengan antarmuka EFA, antarmuka EFA dilampirkan ke instance selama penyediaan instance. Anda dapat menyesuaikan konfigurasi EFA per perangkat dan menggunakan [grup penempatan dengan Karpenter, grup](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) node terkelola EKS, atau grup simpul yang dikelola sendiri EKS. Dengan Karpenter, Anda melewati konfigurasi untuk setiap antarmuka jaringan melalui file. `NodeClass` Dengan grup node terkelola EKS atau node yang dikelola sendiri, Anda meneruskan konfigurasi untuk setiap antarmuka jaringan dengan [templat peluncuran](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html). Dukungan Mode Otomatis EKS untuk konfigurasi EFA per perangkat dan grup penempatan akan segera hadir.

Saat menggunakan [`eksctl`](install-kubectl.md#eksctl-install-update)untuk menyediakan node EKS dengan `efaEnabled` pengaturan, semua antarmuka dikonfigurasi dengan tipe antarmuka`EFA`, grup EFA-specific keamanan dibuat, dan plugin perangkat EFA diinstal pada cluster. [Jika Anda perlu menyesuaikan konfigurasi EFA per perangkat saat menggunakan`eksctl`, disarankan untuk menggunakan dukungan `eksctl untuk templat peluncuran.](https://docs.aws.amazon.com/eks/latest/eksctl/launch-template-support.html)

Contoh berikut menunjukkan cara mengkonfigurasi `NodeClass` dan meluncurkan template dengan antarmuka EFA. Ini berguna untuk menyesuaikan antarmuka yang digunakan untuk EFA vs lalu lintas standar IP-based . Untuk informasi tentang jumlah antarmuka EFA yang didukung oleh setiap jenis instans dan cara mengonfigurasinya untuk bandwidth jaringan maksimum, lihat [Memaksimalkan bandwidth jaringan untuk jenis EFA-enabled instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-acc-inst-types.html) di Panduan Pengguna *Amazon EC2*.

## Karpenter
<a name="eks-efa-auto-karpenter"></a>

Setiap entri dalam `networkInterfaces` menentukan`networkCardIndex`,`deviceIndex`, dan`interfaceType`. `interfaceType`Dapat `interface` untuk antarmuka jaringan standar atau untuk antarmuka EFA yang didedikasikan `efa-only` untuk lalu lintas RDMA dan tidak memiliki alamat IP yang ditetapkan. Ketika `networkInterfaces` dikonfigurasi, instance yang diluncurkan dengan `NodePool` referensi `NodeClass` menggunakan konfigurasi ini terlepas dari apakah Pod meminta `vpc.amazonaws.com/efa` sumber daya.

Saat menggunakan Karpenter tanpa menentukan `networkInterfaces` di dalam Anda`NodeClass`, instance yang dibuat untuk permintaan Pod `vpc.amazonaws.com/efa` memiliki semua antarmuka yang dikonfigurasi dengan tipe antarmuka. `EFA`

`networkInterfaces`Konfigurasi untuk `EC2NodeClass` ditambahkan di Karpenter v1.11. Contoh berikut menunjukkan `EC2NodeClass` dikonfigurasi untuk P6-B200 contoh dengan 1 antarmuka ENA dan 8 EFA-only antarmuka.

### Contoh Karpenter EC2NodeClass dengan EFA-only antarmuka untuk P6-B200
<a name="eks-efa-karpenter-example"></a>

```
apiVersion: karpenter.k8s.aws/v1
kind: EC2NodeClass
metadata:
  name: efa-node-class
spec:
  networkInterfaces:
  - networkCardIndex: 0
    deviceIndex: 0
    interfaceType: interface
  - networkCardIndex: 0
    deviceIndex: 1
    interfaceType: efa-only
  - networkCardIndex: 1
    deviceIndex: 0
    interfaceType: efa-only
  - networkCardIndex: 2
    deviceIndex: 0
    interfaceType: efa-only
  - networkCardIndex: 3
    deviceIndex: 0
    interfaceType: efa-only
  - networkCardIndex: 4
    deviceIndex: 0
    interfaceType: efa-only
  - networkCardIndex: 5
    deviceIndex: 0
    interfaceType: efa-only
  - networkCardIndex: 6
    deviceIndex: 0
    interfaceType: efa-only
  - networkCardIndex: 7
    deviceIndex: 0
    interfaceType: efa-only
```

## EKS mengelola grup node dan node yang dikelola sendiri
<a name="eks-efa-mng-self-managed"></a>

Dengan grup node terkelola EKS atau node yang dikelola sendiri, Anda meneruskan konfigurasi untuk setiap antarmuka jaringan dengan [templat peluncuran](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html).

Contoh berikut menunjukkan template peluncuran yang dikonfigurasi untuk sebuah P6-B200 instance dengan 1 antarmuka ENA dan 8 EFA-only antarmuka. Antarmuka jaringan utama (kartu jaringan 0, indeks perangkat 0) menggunakan `interface` tipe standar untuk lalu lintas IP, sementara antarmuka tambahan digunakan `efa-only` untuk lalu lintas RDMA khusus. Sesuaikan jumlah `efa-only` antarmuka berdasarkan jenis instans Anda. Untuk jumlah antarmuka EFA yang didukung oleh setiap jenis instans, lihat [Memaksimalkan bandwidth jaringan untuk jenis EFA-enabled instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-acc-inst-types.html) di Panduan Pengguna *Amazon EC2*.

### Contoh template peluncuran dengan EFA-only antarmuka untuk P6-B200
<a name="eks-efa-launch-template-example"></a>

Ganti ` security-group-id ` dengan nilai-nilai Anda. Grup keamanan harus mengizinkan semua lalu lintas masuk dan keluar ke dan dari dirinya sendiri untuk mengaktifkan fungsionalitas EFA OS-bypass . Untuk informasi selengkapnya, lihat [Langkah 1: Menyiapkan grup EFA-enabled keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) di *Panduan Pengguna Amazon EC2*.

**penting**  
Jangan tentukan `SubnetId` dalam template peluncuran saat menggunakan grup node terkelola EKS. EKS mengharuskan semua subnet ditentukan melalui `CreateNodegroup` API dan menolak template peluncuran yang menyertakan konfigurasi subnet.

```
{
  "LaunchTemplateName": "efa-launch-template",
  "LaunchTemplateData": {
    "InstanceType": "p6-b200.48xlarge",
    "NetworkInterfaces": [
      {
        "NetworkCardIndex": 0,
        "DeviceIndex": 0,
        "InterfaceType": "interface",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 0,
        "DeviceIndex": 1,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 1,
        "DeviceIndex": 0,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 2,
        "DeviceIndex": 0,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 3,
        "DeviceIndex": 0,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 4,
        "DeviceIndex": 0,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 5,
        "DeviceIndex": 0,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 6,
        "DeviceIndex": 0,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      },
      {
        "NetworkCardIndex": 7,
        "DeviceIndex": 0,
        "InterfaceType": "efa-only",
        "Groups": ["security-group-id"]
      }
    ]
  }
}
```

## Menggunakan EKS-optimized AMI dengan EFA
<a name="eks-amis-efa"></a>

 EKS-optimized [AMI akselerasi AL2023 (NVIDIA dan Neuron) dan semua AMI Bottlerocket menyertakan komponen tingkat host yang diperlukan untuk menggunakan EFA, khususnya komponen yang dipasang oleh aws-efa-installer.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-enable) EKS AL2023 dan **AMI Bottlerocket tidak** menyertakan driver EFA DRA atau plugin perangkat EFA, dan ini harus diinstal secara terpisah di cluster Anda sebelum menerapkan beban kerja.

## Menghemat alokasi alamat IP
<a name="eks-efa-conserve-ip"></a>

EFA-enabled contoh seperti `p5.48xlarge` dan `p6-b200.48xlarge` mendukung banyak antarmuka jaringan. Secara default, Amazon VPC CNI mengalokasikan alamat IP di semua ENI IP-enabled terlampir, yang dapat menggunakan sejumlah besar alamat IP dari subnet Anda bahkan ketika alamat tersebut tidak digunakan secara aktif oleh Pod. Pada instance dengan lusinan antarmuka jaringan, ini dapat dengan cepat menghabiskan ruang IP subnet Anda yang tersedia.

Untuk mengurangi konsumsi alamat IP pada EFA-enabled node, konfigurasikan antarmuka jaringan Anda untuk digunakan `efa-only` untuk semua antarmuka kecuali yang utama. EFA-only antarmuka didedikasikan untuk lalu lintas RDMA dan tidak memiliki alamat IP yang ditetapkan, sehingga mereka tidak menggunakan alamat dari subnet Anda. Misalnya konfigurasi, lihat [Karpenter](#eks-efa-auto-karpenter) dan[EKS mengelola grup node dan node yang dikelola sendiri](#eks-efa-mng-self-managed). Untuk tata letak antarmuka yang disarankan untuk setiap jenis instans, lihat [Memaksimalkan bandwidth jaringan untuk jenis EFA-enabled instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-acc-inst-types.html) di *Panduan Pengguna Amazon EC2*.

Selain menggunakan `efa-only` antarmuka, Anda dapat mengonfigurasi Amazon VPC CNI untuk membatasi jumlah alamat IP hangat (pra-dialokasikan) dan ENI. Secara default, VPC CNI mengalokasikan kumpulan ENI dan alamat IP yang hangat untuk startup Pod yang lebih cepat, tetapi pada instance besar ini dapat memesan ratusan alamat IP yang tidak digunakan. Atur variabel `WARM_IP_TARGET` dan `WARM_ENI_TARGET` lingkungan pada `aws-node` DaemonSet untuk mengontrol berapa banyak alamat IP cadangan dan ENI yang dipertahankan CNI. Untuk informasi selengkapnya tentang setelan ini, lihat [praktik terbaik Amazon VPC CNI](https://docs.aws.amazon.com/eks/latest/best-practices/vpc-cni.html#_overview).

**catatan**  
`WARM_IP_TARGET`Pengaturan `WARM_ENI_TARGET` dan pengaturan di seluruh cluster dan berlaku untuk semua node yang dikelola oleh VPC CNI. Saat ini tidak ada cara untuk mengatur nilai yang berbeda per grup node atau jenis instance. Jika Anda memerlukan kontrol yang lebih terperinci dari pengaturan ini, berikan umpan balik tentang masalah peta jalan [kontainer \#1834](https://github.com/aws/containers-roadmap/issues/1834).

## Instal driver EFA DRA (DRANET)
<a name="efa-dra-driver"></a>

Driver EFA DRA dibangun di proyek [DRANET](https://github.com/kubernetes-sigs/dranet) hulu, yang menyediakan manajemen perangkat jaringan yang sadar cloud untuk Kubernetes DRA. *Driver EFA DRA* dan *DRANET* digunakan secara bergantian di seluruh dokumentasi ini dan merujuk ke alat yang sama.

Driver EFA DRA mengiklankan perangkat EFA sebagai `ResourceSlice` objek dengan nama driver `dra.net` dan nama. `DeviceClass` `efa.networking.k8s.aws` Driver EFA DRA berjalan sebagai a DaemonSet pada setiap node dan secara otomatis menemukan perangkat EFA.

### Prasyarat
<a name="_prerequisites"></a>
+ Cluster Amazon EKS yang menjalankan Kubernetes versi 1.34 atau yang lebih baru dengan grup node terkelola EKS atau grup node yang dikelola sendiri.
+ Node dengan EFA-enabled jenis instans Amazon EC2. Untuk daftar jenis instans yang didukung, lihat [Jenis instans yang didukung](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html#efa-instance-types) di *Panduan Pengguna Amazon EC2*.
+ Node dengan komponen tingkat host yang diinstal untuk EFA, lihat [Menginstal perangkat lunak EFA untuk informasi selengkapnya](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-enable). EKS-optimized AL2023 NVIDIA dan Neuron AMI, dan AMI Bottlerocket menyertakan komponen tingkat host EFA.
+ Helm diinstal di lingkungan baris perintah Anda, lihat [petunjuk Setup Helm](helm.md) untuk informasi selengkapnya.
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat [Instal atau perbarui `kubectl`](install-kubectl.md#kubectl-install-update) untuk informasi selengkapnya.

### Prosedur
<a name="_procedure"></a>

**penting**  
Jangan menginstal driver EFA DRA pada node tempat plugin perangkat EFA berjalan. Kedua mekanisme tidak dapat hidup berdampingan pada node yang sama. Lihat Kubernetes [KEP-5004](https://github.com/kubernetes/enhancements/issues/5004)upstream untuk pembaruan.

1. Tambahkan repositori bagan EKS Helm.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Perbarui repositori Helm lokal Anda.

   ```
   helm repo update
   ```

1. Instal driver EFA DRA di cluster Anda menggunakan Helm. Driver EFA DRA secara otomatis mendeteksi bahwa ia berjalan pada instans EC2 melalui Layanan Metadata Instans (IMDS) dan memungkinkan penemuan perangkat EFA. Driver EFA DRA digunakan sebagai DaemonSet di `kube-system` namespace secara default. Lihat Helm values.yaml di [ GitHub repositori bagan EKS Helm](https://github.com/aws/eks-charts/tree/master/stable/aws-dranet) untuk parameter yang dapat dikonfigurasi.

   ```
   helm install aws-dranet eks/aws-dranet --namespace kube-system
   ```

1. Verifikasi bahwa DRANET DaemonSet sedang berjalan.

   ```
   kubectl get daemonset -n kube-system aws-dranet
   ```

   ```
   NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   aws-dranet    2         2         2       2            2           <none>          60s
   ```

1. Verifikasi bahwa `DeviceClass` telah dibuat.

   ```
   kubectl get deviceclass
   ```

   ```
   NAME                    AGE
   efa.networking.k8s.aws  60s
   ```

1. Verifikasi bahwa `ResourceSlice` objek diiklankan untuk node Anda.

   ```
   kubectl get resourceslices --field-selector spec.driver=dra.net
   ```

   Jika Anda mengalami kesalahan dengan langkah-langkah di atas, Anda dapat memeriksa log untuk DRANET dengan perintah berikut.

   ```
   kubectl logs -n kube-system -l app=aws-dranet
   ```

1. Untuk meminta perangkat EFA menggunakan driver DRA, buat `ResourceClaim` atau `ResourceClaimTemplate` yang mereferensikan EFA `DeviceClass` dan mereferensikannya dalam spesifikasi Pod Anda. Contoh berikut meminta satu perangkat EFA.

   ```
   apiVersion: resource.k8s.io/v1
   kind: ResourceClaimTemplate
   metadata:
     name: single-efa-claim
   spec:
     spec:
       devices:
         requests:
         - name: efa
           exactly:
             deviceClassName: efa.networking.k8s.aws
             count: 1
   ---
   apiVersion: v1
   kind: Pod
   metadata:
     name: efa-workload
   spec:
     containers:
     - name: app
       ...
       resources:
         claims:
         - name: efa-device
     resourceClaims:
     - name: efa-device
       resourceClaimTemplateName: single-efa-claim
   ```

## Topology-aware EFA dan alokasi GPU/Neuron perangkat
<a name="efa-dra-topology-aware"></a>

Driver EFA DRA mendukung alokasi sadar topologi yang memasangkan antarmuka EFA dengan GPU atau perangkat Neuron pada root PCIe yang sama. Gunakan `matchAttribute` kendala untuk menyelaraskan alokasi perangkat EFA dan GPU atau Neuron. Untuk menggunakan kemampuan ini, Anda juga harus menggunakan driver NVIDIA atau Neuron DRA. Untuk informasi selengkapnya, lihat [Kelola perangkat GPU NVIDIA di Amazon EKS](device-management-nvidia.md) dan [Kelola perangkat Neuron di Amazon EKS](device-management-neuron.md).

Contoh berikut meminta 1 antarmuka EFA selaras dengan 1 NVIDIA GPU:

```
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
  name: aligned-efa-nvidia
spec:
  spec:
    devices:
      requests:
      - name: 1-efa
        exactly:
          deviceClassName: efa.networking.k8s.aws
          count: 1
      - name: 1-gpu
        exactly:
          deviceClassName: gpu.nvidia.com
          count: 1
      constraints:
      - requests: ["1-gpu", "1-efa"]
        matchAttribute: "resource.kubernetes.io/pcieRoot"
```

Contoh berikut meminta 4 antarmuka EFA yang disejajarkan dengan 4 perangkat Neuron:

```
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
  name: aligned-efa-neuron
spec:
  spec:
    devices:
      requests:
      - name: 4-neurons
        exactly:
          deviceClassName: neuron.aws.com
          count: 4
      - name: 4-efas
        exactly:
          deviceClassName: efa.networking.k8s.aws
          count: 4
      constraints:
      - requests: ["4-neurons", "4-efas"]
        matchAttribute: "resource.aws.com/devicegroup4_id"
```

Angka dalam nama `devicegroup` atribut sesuai dengan jumlah perangkat Neuron dalam grup topologi yang terhubung. Misalnya, `resource.aws.com/devicegroup1_id` mengidentifikasi perangkat Neuron tunggal, `resource.aws.com/devicegroup4_id` mengidentifikasi sekelompok 4 perangkat yang terhubung, dan dan `resource.aws.com/devicegroup16_id` mengidentifikasi kelompok 8 `resource.aws.com/devicegroup8_id` dan 16 perangkat yang terhubung masing-masing. Pilih `matchAttribute` yang cocok dengan perangkat `count` dalam permintaan Anda sehingga perangkat Neuron dan antarmuka EFA yang dialokasikan milik grup topologi terhubung yang sama. Untuk informasi lebih lanjut tentang atribut ini, lihat [dokumentasi driver Neuron DRA](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/neuron-dra.html).

Anda dapat menggunakan `allocationMode` untuk menyederhanakan bagaimana perangkat EFA dialokasikan ke GPU atau akselerator Neuron yang selaras. `allocationMode`Bidang ini mendukung dua nilai: `ExactCount` (default) meminta sejumlah perangkat tertentu yang ditentukan oleh`count`, dan `All` meminta semua perangkat yang cocok dalam kumpulan. Misalnya, pada `p5.48xlarge` instance ada empat perangkat EFA yang berbagi root PCIe yang sama dengan satu GPU. Untuk mengalokasikan grup perangkat EFA ini dengan GPU yang selaras, bahkan jika Anda tidak mengetahui pemetaan EFA-GPU perangkat yang tepat dan jumlah perangkat EFA yang selaras, Anda dapat mengonfigurasi perangkat EFA Anda untuk perangkat EFA. `ResourceClaimTemplate` `allocationMode: All`

```
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
  name: aligned-all-efa-one-nvidia
spec:
  spec:
    devices:
      requests:
      - name: all-efas
        exactly:
          deviceClassName: efa.networking.k8s.aws
          allocationMode: All
      - name: one-gpu
        exactly:
          deviceClassName: gpu.nvidia.com
          allocationMode: ExactCount
          count: 1
      constraints:
      - requests: ["all-efas", "one-gpu"]
        matchAttribute: "resource.kubernetes.io/pcieRoot"
```

## Bagikan perangkat EFA di antara beberapa Pod
<a name="efa-dra-share"></a>

Driver EFA DRA mendukung berbagi perangkat EFA antara beberapa Pod dengan menggunakan file. `ResourceClaim` Tidak seperti a`ResourceClaimTemplate`, yang menghasilkan klaim terpisah untuk setiap Pod, a `ResourceClaim` adalah objek bernama yang Anda buat secara independen dan referensi dari beberapa Pod. Semua Pod yang `ResourceClaim` mereferensikan akses berbagi yang sama ke perangkat EFA yang dialokasikan sama dan dijadwalkan ke node yang sama di mana perangkat tersebut tersedia.

Untuk berbagi perangkat EFA antar Pod, buat perangkat `ResourceClaim` yang meminta perangkat EFA, lalu referensi yang mengklaim berdasarkan nama di setiap `resourceClaims` bidang Pod menggunakan. `resourceClaimName` `ResourceClaim`Harus ada di klaster sebelum Pod yang mereferensikannya dibuat. Jika referensi `ResourceClaim` tidak ada, Pod tetap dalam status tertunda sampai klaim dibuat.

Contoh berikut membuat sebuah `ResourceClaim` yang meminta 4 perangkat EFA, dan dua Pod yang berbagi akses ke perangkat tersebut.

1. Buat `ResourceClaim`.

   ```
   apiVersion: resource.k8s.io/v1
   kind: ResourceClaim
   metadata:
     name: shared-efa
   spec:
     devices:
       requests:
       - name: efa
         exactly:
           deviceClassName: efa.networking.k8s.aws
           count: 4
   ```

1. Referensikan nama `ResourceClaim` menurut di setiap Pod yang membutuhkan akses ke perangkat EFA. Setiap Pod menggunakan `resourceClaimName` untuk mereferensikan klaim yang ada, bukan`resourceClaimTemplateName`.

   ```
   apiVersion: v1
   kind: Pod
   metadata:
     name: training-worker
   spec:
     containers:
     - name: worker
       image: my-training-image
       resources:
         claims:
         - name: efa-devices
     resourceClaims:
     - name: efa-devices
       resourceClaimName: shared-efa
   ---
   apiVersion: v1
   kind: Pod
   metadata:
     name: training-monitor
   spec:
     containers:
     - name: monitor
       image: my-monitor-image
       resources:
         claims:
         - name: efa-devices
     resourceClaims:
     - name: efa-devices
       resourceClaimName: shared-efa
   ```

Kedua Pod mereferensikan hal yang sama `shared-efa` `ResourceClaim` dan dijadwalkan ke node tempat perangkat EFA tersebut dialokasikan. `ResourceClaim`Siklus hidup tidak tergantung pada Pod — siklus hidup tetap ada sampai Anda menghapusnya, bahkan jika semua Pod yang mereferensikannya dihapus.

## Instal plugin perangkat EFA Kubernetes
<a name="eks-efa-device-plugin"></a>

Plugin perangkat EFA Kubernetes mengiklankan perangkat EFA sebagai sumber daya yang diperluas. `vpc.amazonaws.com/efa` Anda meminta perangkat EFA dalam permintaan dan batasan sumber daya kontainer. Untuk panduan lengkap tentang pengaturan EFA dengan beban kerja pelatihan, lihat. [Jalankan pelatihan pembelajaran mesin di Amazon EKS dengan Adaptor Kain Elastis](node-efa.md)

**penting**  
Topology-aligned alokasi GPU NVIDIA atau perangkat Neuron dengan antarmuka EFA terjadi secara otomatis saat menggunakan AMI yang dipercepat EKS-optimized AL2023. Penyelarasan otomatis ini tidak terjadi saat menggunakan AMI Bottlerocket EKS-optimized atau AMI khusus. Jika Anda memerlukan akselerator yang selaras dengan topologi dan alokasi perangkat EFA dengan Bottlerocket atau AMI khusus, gunakan driver EFA DRA dan driver Neuron DRA yang sesuai. Driver NVIDIA DRA tidak didukung di Bottlerocket. Untuk informasi selengkapnya, lihat [Topology-aware EFA dan alokasi GPU/Neuron perangkat](#efa-dra-topology-aware).

**penting**  
Dimulai dengan NVIDIA `k8s-device-plugin` v0.19.0, `--mofed-enabled` flag default ke`true`, yang menyebabkan plugin perangkat NVIDIA memasang semua `/dev/infiniband/uverbs*` perangkat ke dalam wadah yang meminta GPU. Ini bertentangan dengan plugin perangkat EFA, yang seharusnya menjadi komponen yang mengelola alokasi perangkat EFA di. `/dev/infiniband` Jika Anda menggunakan grup node terkelola EKS atau node yang dikelola sendiri dengan plugin perangkat NVIDIA, Anda harus menonaktifkan MOFED secara eksplisit. Untuk petunjuk, lihat [Instal plugin perangkat NVIDIA Kubernetes](device-management-nvidia.md#nvidia-device-plugin).  
Mode Otomatis EKS tidak mengaktifkan MOFED secara default dan tidak terpengaruh oleh masalah ini.

### Prasyarat
<a name="_prerequisites_2"></a>
+ Cluster Amazon EKS.
+ Node dengan EFA-enabled jenis instans Amazon EC2. Untuk daftar jenis instans yang didukung, lihat [Jenis instans yang didukung](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html#efa-instance-types) di *Panduan Pengguna Amazon EC2*.
+ Node dengan komponen tingkat host yang diinstal untuk EFA, lihat [Menginstal perangkat lunak EFA untuk informasi selengkapnya](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-enable). EKS-optimized AL2023 NVIDIA dan Neuron AMI, dan AMI Bottlerocket menyertakan komponen tingkat host EFA.
+ Helm diinstal di lingkungan baris perintah Anda, lihat [petunjuk Setup Helm](helm.md) untuk informasi selengkapnya.
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat [Instal atau perbarui `kubectl`](install-kubectl.md#kubectl-install-update) untuk informasi selengkapnya.

### Prosedur
<a name="_procedure_2"></a>

1. Tambahkan repositori bagan EKS Helm.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Perbarui repositori Helm lokal Anda.

   ```
   helm repo update
   ```

1. Instal plugin perangkat EFA.

   ```
   helm install efa eks/aws-efa-k8s-device-plugin -n kube-system
   ```

1. Verifikasi plugin perangkat EFA DaemonSet sedang berjalan.

   ```
   kubectl get daemonset -n kube-system efa-aws-efa-k8s-device-plugin
   ```

   ```
   NAME                                  DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   efa-aws-efa-k8s-device-plugin         2         2         2       2            2           <none>          60s
   ```

1. Verifikasi bahwa node Anda memiliki sumber daya EFA yang dapat dialokasikan.

   ```
   kubectl get nodes "-o=custom-columns=NAME:.metadata.name,EFA:.status.allocatable.vpc\.amazonaws\.com/efa"
   ```

   ```
   NAME                                           EFA
   ip-192-168-11-225.us-west-2.compute.internal   4
   ip-192-168-24-96.us-west-2.compute.internal    4
   ```

1. Untuk meminta perangkat EFA menggunakan plugin perangkat, tentukan `vpc.amazonaws.com/efa` sumber daya dalam permintaan dan batasan sumber daya penampung Anda.

   ```
   apiVersion: v1
   kind: Pod
   metadata:
     name: efa-workload
   spec:
     containers:
     - name: app
       ...
       resources:
         limits:
           vpc.amazonaws.com/efa: 4
           hugepages-2Mi: ...
         requests:
           vpc.amazonaws.com/efa: 4
           hugepages-2Mi: ...
   ```