Buat node yang dikelola sendiri dengan Blok Kapasitas untuk ML - Amazon EKS

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

Buat node yang dikelola sendiri dengan Blok Kapasitas untuk ML

Blok Kapasitas untuk pembelajaran mesin (ML) memungkinkan Anda melakukan reservasi GPU instans di masa mendatang untuk mendukung beban kerja MS berdurasi pendek Anda. Untuk informasi selengkapnya, lihat Blok Kapasitas untuk ML di Panduan EC2 Pengguna Amazon untuk Instans Linux.

Pertimbangan

penting
  • Blok Kapasitas hanya tersedia untuk jenis dan AWS Wilayah EC2 instans Amazon tertentu. Untuk informasi kompatibilitas, lihat Prasyarat Bekerja dengan Blok Kapasitas di Panduan EC2 Pengguna Amazon untuk Instans Linux.

  • Blok Kapasitas saat ini tidak dapat digunakan dengan Karpenter.

  • Jika Anda membuat grup node yang dikelola sendiri sebelum reservasi kapasitas menjadi aktif, maka atur kapasitas yang diinginkan. 0

  • Untuk memberikan waktu yang cukup untuk menguras node dengan baik, kami sarankan Anda menjadwalkan penskalaan ke skala nol lebih dari 30 menit sebelum waktu akhir reservasi Blok Kapasitas.

  • Dalam rangka untuk Anda Pods agar terkuras dengan baik, kami sarankan Anda mengatur AWS Node Termination Handler seperti yang dijelaskan dalam langkah-langkah contoh.

Gunakan Blok Kapasitas dengan node yang dikelola sendiri

Anda dapat menggunakan Blok Kapasitas dengan Amazon EKS untuk menyediakan dan menskalakan node yang dikelola sendiri. Langkah-langkah berikut memberikan gambaran umum contoh. Contoh AWS CloudFormation template tidak mencakup setiap aspek yang diperlukan dalam beban kerja produksi. Biasanya Anda juga ingin skrip bootstrap bergabung dengan node ke cluster, menentukan Amazon yang EKS dipercepatAMI, dan profil instance yang sesuai untuk bergabung dengan cluster. Untuk informasi selengkapnya, lihat Buat node Amazon Linux yang dikelola sendiri.

  1. Buat template peluncuran yang berlaku untuk beban kerja Anda. Untuk informasi selengkapnya, lihat Menggunakan Blok Kapasitas untuk beban kerja pembelajaran mesin di Panduan Pengguna Amazon EC2 Auto Scaling.

    Pastikan yang LaunchTemplateData termasuk yang berikut ini:

    • InstanceMarketOptionsdengan MarketType set ke "capacity-block"

    • CapacityReservationSpecification: CapacityReservationTargetdengan CapacityReservationId diatur ke Blok Kapasitas (misalnya:cr-02168da1478b509e0 )

    • IamInstanceProfiledengan Arn set ke yang berlaku iam-instance-profile-arn

    • ImageIddiatur ke yang berlaku image-id

    • InstanceTypedisetel ke jenis instance yang mendukung Blok Kapasitas (misalnya: p5.48xlarge)

    • SecurityGroupIdsdiatur ke yang berlaku IDs (misalnya: sg-05b1d815d1EXAMPLE)

    • UserDatadiatur ke yang berlaku user-data untuk grup node yang dikelola sendiri

      Berikut ini adalah kutipan dari template yang membuat CloudFormation template peluncuran yang menargetkan Blok Kapasitas.

      NodeLaunchTemplate: Type: "aws::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" IamInstanceProfile: Arn: iam-instance-profile-arn ImageId: image-id InstanceType: p5.48xlarge KeyName: key-name SecurityGroupIds: - sg-05b1d815d1EXAMPLE UserData: user-data

      Anda harus melewati subnet di Availability Zone di mana reservasi dilakukan karena Blok Kapasitas bersifat zonal.

  2. Gunakan template peluncuran untuk membuat grup node yang dikelola sendiri. Jika Anda melakukan ini sebelum reservasi kapasitas menjadi aktif, maka atur kapasitas yang diinginkan0. Saat membuat grup node, pastikan bahwa Anda hanya menentukan subnet masing-masing untuk Availability Zone di mana kapasitas dicadangkan.

    Berikut ini adalah contoh CloudFormation template yang dapat Anda referensikan saat membuat salah satu yang berlaku untuk beban kerja Anda. Contoh ini mendapatkan LaunchTemplateId dan Version dari AWS::Amazon EC2::LaunchTemplate sumber daya yang ditunjukkan pada langkah sebelumnya. Itu juga mendapatkan nilai untukDesiredCapacity,, MaxSizeMinSize, dan VPCZoneIdentifier yang dideklarasikan di tempat lain dalam template yang sama.

    NodeGroup: Type: "AWS::AutoScaling::AutoScalingGroup" Properties: DesiredCapacity: !Ref NodeAutoScalingGroupDesiredCapacity LaunchTemplate: LaunchTemplateId: !Ref NodeLaunchTemplate Version: !GetAtt NodeLaunchTemplate.LatestVersionNumber MaxSize: !Ref NodeAutoScalingGroupMaxSize MinSize: !Ref NodeAutoScalingGroupMinSize VPCZoneIdentifier: !Ref Subnets Tags: - Key: Name PropagateAtLaunch: true Value: !Sub ${ClusterName}-${NodeGroupName}-Node - Key: !Sub kubernetes.io/cluster/${ClusterName} PropagateAtLaunch: true Value: owned
  3. Setelah grup node berhasil dibuat, pastikan untuk merekam NodeInstanceRole untuk grup node yang dibuat. Anda memerlukan ini untuk memastikan bahwa ketika grup node diskalakan, node baru bergabung dengan cluster dan Kubernetes mampu mengenali node. Untuk informasi selengkapnya, lihat AWS Management Console petunjuk di Membuat node Amazon Linux yang dikelola sendiri.

  4. Kami menyarankan Anda membuat kebijakan penskalaan terjadwal untuk grup Auto Scaling yang sejajar dengan waktu reservasi Blok Kapasitas. Untuk informasi selengkapnya, lihat Penskalaan terjadwal untuk EC2 Auto Scaling Amazon di Panduan Pengguna Amazon Auto EC2 Scaling.

    Anda dapat menggunakan semua instans yang Anda pesan hingga 30 menit sebelum waktu akhir Blok Kapasitas. Contoh yang masih berjalan pada saat itu akan mulai berakhir. Untuk memberikan waktu yang cukup untuk menguras node dengan baik, kami sarankan Anda menjadwalkan penskalaan ke skala nol lebih dari 30 menit sebelum waktu akhir reservasi Blok Kapasitas.

    Jika Anda ingin meningkatkan secara manual setiap kali reservasi kapasitas terjadiActive, maka Anda perlu memperbarui kapasitas yang diinginkan grup Auto Scaling pada waktu mulai reservasi Blok Kapasitas. Kemudian Anda juga perlu menurunkan skala secara manual lebih dari 30 menit sebelum waktu akhir reservasi Blok Kapasitas.

  5. Grup node sekarang siap untuk beban kerja dan Pods untuk dijadwalkan.

  6. Dalam rangka untuk Anda Pods agar terkuras dengan baik, kami sarankan Anda mengatur AWS Node Termination Handler. Handler ini akan dapat menonton peristiwa siklus hidup "ASGScale-in” dari Amazon Auto EC2 Scaling menggunakan dan mengizinkan EventBridge Kubernetes bidang kontrol untuk mengambil tindakan yang diperlukan sebelum instance menjadi tidak tersedia. Jika tidak, Anda Pods and Kubernetes objek akan macet dalam keadaan tertunda. Untuk informasi selengkapnya, lihat AWS Node Termination Handler di GitHub.

    Jika Anda tidak menyiapkan Node Termination Handler, kami sarankan Anda mulai menguras Pods secara manual sebelum menekan jendela 30 menit sehingga mereka memiliki cukup waktu untuk dikeringkan dengan anggun.