View a markdown version of this page

Kelola perangkat EFA di Amazon EKS - Amazon EKS

Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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

Elastic Fabric Adapter (EFA) adalah perangkat jaringan untuk instans Amazon EC2 yang memungkinkan komunikasi antar node 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.

Sebaiknya gunakan driver DRA untuk penerapan baru dengan Kubernetes versi 1.34 dan yang lebih baru saat menggunakan penyediaan kapasitas statis di Karpenter, grup node terkelola EKS, atau node yang dikelola sendiri. DRA saat ini tidak didukung dengan Mode Otomatis EKS. Dengan driver EFA DRA, Anda dapat mengonfigurasi alokasi sadar topologi yang memasangkan antarmuka EFA dengan GPU lokal topologi atau perangkat Neuron, dan berbagi perangkat antar Pod.

Driver EFA DRA vs plugin perangkat EFA

Fitur Pengemudi EFA DRA Plugin perangkat EFA

Versi Kubernetes minimum

1.34

Semua versi EKS-supported Kubernetes

Komputasi EKS

Karpenter (hanya kapasitas statis), grup node terkelola, node yang dikelola sendiri

Mode Otomatis EKS, Karpenter, grup simpul terkelola, node yang dikelola sendiri

EKS-optimized AMI

AL2023, Bottlerocket

AL2023, Bottlerocket

Iklan perangkat

Atribut kaya melalui ResourceSlice objek termasuk jenis perangkat, topologi, dan lokalitas PCIe

Jumlah bilangan bulat dari sumber daya vpc.amazonaws.com/efa yang 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

Saat Anda membuat node EKS dengan antarmuka EFA, antarmuka EFA dilampirkan ke instance selama penyediaan instans. Anda dapat menyesuaikan konfigurasi EFA per perangkat dan menggunakan grup penempatan dengan Mode Otomatis EKS, Karpenter, grup simpul dikelola EKS, atau grup simpul yang dikelola sendiri EKS. Dengan Mode Otomatis EKS, Anda melewati konfigurasi untuk setiap antarmuka jaringan melalui bagian NodeClass bawahadvancedNetworking.networkInterfaces. Dengan Karpenter, Anda melewati konfigurasi untuk setiap antarmuka jaringan melalui. EC2NodeClass Dengan grup node yang dikelola EKS atau node yang dikelola sendiri, Anda melewati konfigurasi untuk setiap antarmuka jaringan dengan template https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html peluncuran.

Saat menggunakan eksctl untuk penyediaan node EKS dengan efaEnabled pengaturan, semua antarmuka dikonfigurasi dengan jenis antarmukaEFA, grup EFA-specific keamanan dibuat, dan plugin perangkat EFA diinstal pada cluster. Jika Anda perlu menyesuaikan konfigurasi EFA per perangkat saat menggunakaneksctl, disarankan untuk menggunakan dukungan `eksctl untuk template 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 IP-based lalu lintas EFA vs standar. Untuk informasi tentang jumlah antarmuka EFA yang didukung oleh setiap jenis instans dan cara mengonfigurasinya untuk bandwidth jaringan maksimum, lihat Memak simalkan bandwidth jaringan untuk jenis EFA-enabled contoh di Panduan Pengguna Amazon EC2.

Mode Otomatis EKS

Dalam Mode Otomatis EKS, Anda mengkonfigurasi antarmuka jaringan EFA menggunakan advancedNetworking.networkInterfaces bidang di NodeClass (eks.amazonaws.com/v1). Setiap entri menentukan anetworkCardIndex,deviceIndex, daninterfaceType. Bisa interfaceType untuk antarmuka jaringan standar atau interface untuk antarmuka EFA yang didedikasikan efa-only untuk lalu lintas RDMA tanpa alamat IP yang ditetapkan.

Ketika networkInterfaces dikonfigurasi, instans yang diluncurkan oleh NodePool referensi NodeClass menggunakan konfigurasi ini terlepas dari apakah Pod meminta vpc.amazonaws.com/efa sumber daya. Mode Otomatis EKS tidak melampirkan IP tambahan, awalan, atau ENI setelah peluncuran instance untuk node dengan konfigurasi antarmuka jaringan statis - hanya antarmuka dan IP yang dikonfigurasi saat peluncuran tersedia untuk Pod.

Fitur ini dapat digunakan dengan kumpulan node kapasitas statis untuk mempertahankan node yang sudah dipanaskan sebelumnya untuk pelatihan terdistribusi dan beban kerja inferensi. EFA-ready

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: efa-node-class spec: role: MyNodeRole subnetSelectorTerms: - tags: Name: "private-subnet" securityGroupSelectorTerms: - tags: Name: "efa-security-group" placementGroupSelector: name: "ml-training-pg" advancedNetworking: networkInterfaces: - deviceIndex: 0 interfaceType: interface networkCardIndex: 0 secondaryIPv4PrefixCount: 1 - 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

Untuk daftar lengkap kendala pada konfigurasi antarmuka jaringan statis, lihat Konfigurasi Antarmuka Jaringan Statis dalam NodeClass dokumentasi.

Karpenter

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

Saat menggunakan Karpenter tanpa menentukan networkInterfaces di AndaNodeClass, instans yang dibuat untuk Pod yang meminta vpc.amazonaws.com/efa memiliki semua antarmuka dikonfigurasi dengan jenis antarmuka. EFA

networkInterfacesKonfigurasi untuk EC2NodeClass ditambahkan di Karpenter v1.11. Contoh berikut menunjukkan yang EC2NodeClass dikonfigurasi untuk sebuah P6-B200 instance dengan 1 antarmuka ENA dan 8 EFA-only antarmuka.

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

Grup node yang dikelola EKS dan node yang dikelola sendiri

Dengan grup node yang dikelola EKS atau node yang dikelola sendiri, Anda melewati konfigurasi untuk setiap antarmuka jaringan dengan template https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html peluncuran.

Contoh berikut menunjukkan template peluncuran yang dikonfigurasi untuk 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 Memak simalkan bandwidth jaringan untuk jenis EFA-enabled instans di Panduan Pengguna Amazon EC2.

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 EF OS-bypass A. Untuk informasi selengkapnya, lihat Langkah 1: Mempersiapkan grup EFA-enabled keamanan di Panduan Pengguna Amazon EC2.

penting

Jangan tentukan SubnetId dalam template peluncuran saat menggunakan grup node yang dikelola EKS. EKS mensyaratkan bahwa 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

AMI EKS-optimized AL2023 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 DRA EFA atau plugin perangkat EFA, dan ini harus diinstal secara terpisah di cluster Anda sebelum menerapkan beban kerja.

Melestarikan alokasi alamat IP

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 instans 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 danGrup node yang dikelola EKS dan node yang dikelola sendiri. Untuk tata letak antarmuka yang disarankan untuk setiap jenis instans, lihat Mem aksimalkan bandwidth jaringan untuk jenis EFA-enabled instans 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 melakukan pra-alokasi kumpulan ENI dan alamat IP yang hangat untuk startup Pod yang lebih cepat, tetapi pada instans besar ini dapat menyimpan ratusan alamat IP yang tidak digunakan. Atur variabel WARM_IP_TARGET dan WARM_ENI_TARGET lingkungan aws-node DaemonSet untuk mengontrol berapa banyak alamat IP cadangan dan ENI yang dikelola CNI. Untuk informasi selengkapnya tentang pengaturan ini, lihat praktik terbaik Amazon VPC CNI.

catatan

Peng WARM_ENI_TARGET WARM_IP_TARGET aturan dan bersifat seluruh cluster dan berlaku untuk semua node yang dikelola oleh VPC CNI. Saat ini tidak ada cara untuk menetapkan nilai yang berbeda untuk setiap grup node atau jenis instance. Jika Anda memerlukan kontrol yang lebih terperinci atas pengaturan ini, berikan umpan balik tentang masalah container-peta jalan #1834 di. GitHub

Instal driver EFA DRA (DRANET)

Driver EFA DRA dibangun di proyek DRANET hulu GitHub, 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

  • Cluster Amazon EKS yang menjalankan Kubernetes versi 1.34 atau yang lebih baru dengan kapasitas statis yang disediakan oleh Karpenter, grup node yang dikelola EKS, atau grup node yang dikelola sendiri.

  • Node dengan EFA-enabled tipe instans Amazon EC2. Untuk daftar jenis instans yang didukung, lihat Jenis instans yang didukung di Panduan Pengguna Amazon EC2.

  • Node dengan komponen tingkat host yang diinstal untuk EFA, lihat Meng instal perangkat lunak EFA untuk informasi selengkapnya. AMi NVIDIA dan Neuron EKS-optimized AL2023, dan AMI Bottlerocket menyertakan komponen tingkat host EFA.

  • Helm diinstal di lingkungan baris perintah Anda, lihat petunjuk Peng aturan Helm untuk informasi selengkapnya.

  • kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat Instal atau perbarui kubectl untuk informasi selengkapnya.

Prosedur

penting

Jangan menginstal driver EFA DRA pada node tempat plugin perangkat EFA berjalan. Kedua mekanisme tidak dapat hidup berdampingan pada node yang sama. Melakukannya dapat menyebabkan kelebihan langganan senyap dari perangkat yang mendasarinya ke beberapa pod pada node yang sama.

  1. Tambahkan repositori bagan EKS Helm.

    helm repo add eks https://aws.github.io/eks-charts
  2. Perbarui repositori Helm lokal Anda.

    helm repo update
  3. Instal driver EFA DRA pada cluster Anda menggunakan Helm. Driver EFA DRA secara otomatis mendeteksi bahwa ia berjalan pada instans EC2 melalui Instance Metadata Service (IMDS) dan memungkinkan penemuan perangkat EFA. Driver EFA DRA digunakan sebagai a DaemonSet di kube-system namespace secara default. Lihat Helm values.yaml di repositori bagan EKS Helm GitHub untuk parameter yang dapat dikonfigurasi.

    helm install aws-dranet eks/aws-dranet --namespace kube-system
  4. 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
  5. Verifikasi bahwa DeviceClass itu dibuat.

    kubectl get deviceclass
    NAME AGE efa.networking.k8s.aws 60s
  6. 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
  7. Untuk meminta perangkat EFA menggunakan driver DRA, buat ResourceClaim atau ResourceClaimTemplate yang mereferensikan EFA DeviceClass dan referensi 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

Driver EFA DRA mendukung alokasi sadar topologi yang memasangkan antarmuka EFA dengan GPU atau perangkat Neuron pada root PCIe yang sama. Gunakan batasan untuk menyelaraskan alokasi perangkat EFA dan GPU atau Neuron. matchAttribute Untuk menggunakan kemampuan ini, Anda juga harus menggunakan driver NVIDIA atau Neuron DRA. Untuk informasi selengkapnya, lihat Kelola GPU NVIDIA di Amazon EKS dan Kelola perangkat Neuron di Amazon EKS.

Contoh berikut meminta 1 antarmuka EFA yang disejajarkan dengan 1 GPU NVIDIA:

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 satu perangkat Neuron, resource.aws.com/devicegroup4_id mengidentifikasi sekelompok 4 perangkat yang terhubung, resource.aws.com/devicegroup8_id dan resource.aws.com/devicegroup16_id mengidentifikasi kelompok 8 dan 16 perangkat yang terhubung masing-masing. Pilih matchAttribute yang cocok dengan perangkat count dalam permintaan Anda sehingga perangkat Neuron yang dialokasikan dan antarmuka EFA milik grup topologi terhubung yang sama. Untuk informasi lebih lanjut tentang atribut ini, lihat dokumentasi driver Neuron DRA.

Anda dapat menggunakan allocationMode untuk menyederhanakan bagaimana perangkat EFA dialokasikan ke akselerator GPU atau Neuron yang selaras. Bid allocationMode ang mendukung dua nilai: ExactCount (default) meminta sejumlah perangkat tertentu yang ditentukan olehcount, dan All meminta semua perangkat yang cocok dalam kumpulan. Misalnya, pada p5.48xlarge contoh 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 ResourceClaimTemplate perangkat Anda allocationMode: All untuk perangkat EFA.

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 antara beberapa Pod

Driver EFA DRA mendukung berbagi perangkat EFA antara beberapa Pod dengan menggunakan a. ResourceClaim Tidak seperti aResourceClaimTemplate, 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 mereferensikan akses ResourceClaim berbagi akses ke perangkat EFA yang dialokasikan yang sama dan dijadwalkan ke node yang sama di mana perangkat tersebut tersedia.

Untuk berbagi perangkat EFA antar Pod, buat ResourceClaim yang meminta perangkat EFA, lalu referensi klaim tersebut berdasarkan nama di setiap resourceClaims bidang Pod menggunakan. resourceClaimName ResourceClaimHarus ada di cluster 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
  2. Referensi ResourceClaim kan berdasarkan nama di setiap Pod yang membutuhkan akses ke perangkat EFA. Setiap Pod digunakan resourceClaimName untuk mereferensikan klaim yang ada, bukanresourceClaimTemplateName.

    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 sama shared-efa ResourceClaim dan dijadwalkan ke node tempat perangkat EFA tersebut dialokasikan. Sik ResourceClaim lus hidup tidak bergantung pada Pod — siklus hidup tetap ada sampai Anda menghapusnya, bahkan jika semua Pod yang mereferensikannya dihapus.

Instal plugin perangkat EFA Kubernetes

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 menyiapkan EFA dengan beban kerja pelatihan, lihat. Jalankan pelatihan pembelajaran mesin di Amazon EKS dengan Adaptor Kain Elastis

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 atau EKS-optimized 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. Untuk menggunakan driver NVIDIA DRA di Bottlerocket, Anda harus terlebih dahulu menonaktifkan plugin perangkat NVIDIA yang dibundel dengan varian Bottlerocket NVIDIA, yang memerlukan Bottlerocket versi 1.63.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat Topology-aware EFA dan alokasi GPU/Neuron perangkat dan Instal driver NVIDIA DRA.

penting

Dimulai dengan NVIDIA k8s-device-plugin v0.19.0, --mofed-enabled bendera default ketrue, 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 yang dikelola EKS atau node yang dikelola sendiri dengan plugin perangkat NVIDIA, Anda harus menonaktifkan MOFED secara eksplisit. Untuk petunjuk, lihat Instal plugin perangkat NVIDIA Kubernetes.

Mode Otomatis EKS tidak mengaktifkan MOFED secara default dan tidak terpengaruh oleh masalah ini.

Prasyarat

  • Cluster Amazon EKS.

  • Node dengan EFA-enabled tipe instans Amazon EC2. Untuk daftar jenis instans yang didukung, lihat Jenis instans yang didukung di Panduan Pengguna Amazon EC2.

  • Node dengan komponen tingkat host yang diinstal untuk EFA, lihat Meng instal perangkat lunak EFA untuk informasi selengkapnya. AMI EKS-optimized AL2023 dan AMI Bottlerocket menyertakan komponen tingkat host EFA.

  • Helm diinstal di lingkungan baris perintah Anda, lihat petunjuk Peng aturan Helm untuk informasi selengkapnya.

  • kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat Instal atau perbarui kubectl untuk informasi selengkapnya.

Prosedur

  1. Tambahkan repositori bagan EKS Helm.

    helm repo add eks https://aws.github.io/eks-charts
  2. Perbarui repositori Helm lokal Anda.

    helm repo update
  3. Instal plugin perangkat EFA.

    helm install efa eks/aws-efa-k8s-device-plugin -n kube-system
  4. 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
  5. Pastikan 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
  6. Untuk meminta perangkat EFA menggunakan plugin perangkat, tentukan vpc.amazonaws.com/efa sumber daya dalam permintaan dan batasan sumber daya kontainer 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: ...