Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengonfigurasi label dan taint Kubernetes kustom di Amazon SageMaker HyperPod
SageMaker HyperPod Cluster Amazon dengan orkestrator Amazon Elastic Kubernetes Service (Amazon EKS) mendukung label Kubernetes kustom dan taint untuk node dalam grup instance. Label dan taints adalah mekanisme penjadwalan dan organisasi mendasar di Kubernetes yang memberi Anda kontrol yang baik atas penempatan pod dan pemanfaatan sumber daya.
Label adalah pasangan nilai kunci yang dapat dilampirkan ke objek Kubernetes, memungkinkan Anda untuk mengatur dan memilih sumber daya berdasarkan atribut. Taints, bekerja sama dengan toleransi, adalah properti khusus node yang memengaruhi penjadwalan pod dengan menolak pod yang tidak memiliki toleransi yang cocok. Bersama-sama, mekanisme ini memungkinkan Anda untuk mengisolasi beban kerja, menetapkannya sesuai dengan spesifikasi perangkat keras, dan memastikan pemanfaatan sumber daya yang optimal.
Kasus penggunaan umum
Berikut ini adalah skenario umum di mana label dan noda khusus bermanfaat:
-
Mencegah pod sistem pada instans mahal - Menerapkan taints ke instance GPU untuk mencegah pod sistem dan beban kerja non-kritis lainnya menghabiskan sumber daya komputasi yang mahal
-
Integrasi dengan perkakas yang ada - Terapkan label yang sesuai dengan pola infrastruktur yang telah ditetapkan organisasi Anda dan konfigurasi afinitas simpul
Mengkonfigurasi label dan noda
Anda dapat mengonfigurasi label dan taint Kubernetes kustom di tingkat grup instance menggunakan KubernetesConfig parameter dalam konfigurasi klaster Anda. Label dan taints diterapkan ke semua node dalam grup instance dan bertahan sepanjang siklus hidup cluster.
KubernetesConfigParameternya bersifat deklaratif, artinya Anda menentukan status lengkap label dan taint yang diinginkan untuk grup instance. SageMaker HyperPod kemudian merekonsiliasi keadaan sebenarnya dari node agar sesuai dengan keadaan yang diinginkan ini.
-
Menambahkan label atau noda - Sertakan label atau noda baru
KubernetesConfigbersama dengan label yang sudah ada yang ingin Anda simpan -
Memperbarui label atau noda - Ubah nilai
KubernetesConfiguntuk label atau noda yang ingin Anda ubah, dan sertakan semua yang ingin Anda simpan -
Menghapus label atau noda - Hilangkan label atau noda yang ingin Anda hapus dari
KubernetesConfig, simpan hanya label yang ingin Anda pertahankan
Membuat cluster dengan label dan taints
Saat membuat SageMaker HyperPod cluster baru, sertakan KubernetesConfig parameter dalam konfigurasi grup instans Anda. Contoh berikut menunjukkan cara membuat cluster dengan label kustom dan taints:
{ "ClusterName": "my-cluster", "InstanceGroups": [{ "InstanceGroupName": "worker-group-1", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 4, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh", "OnCreate": "on-create.sh" }, "ExecutionRole":"arn:aws:iam::123456789012:role/HyperPodExecutionRole", "ThreadsPerCore": 1, "KubernetesConfig": { "Labels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "Taints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }, { "key": "dedicated", "value": "ml-workloads", "effect": "NoExecute" }] } }], "VpcConfig": { "SecurityGroupIds": ["sg-0123456789abcdef0"], "Subnets": ["subnet-0123456789abcdef0","subnet-0123456789abcdef1"] }, "Orchestrator": { "Eks": { "ClusterArn":"arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster"} } }
Dalam contoh ini:
-
Label - Tiga label khusus diterapkan:
env=prod,team=ml-training, dangpu-type=a100 -
Taints - Dua taint dikonfigurasi untuk mencegah penjadwalan pod yang tidak diinginkan
Memperbarui label dan noda pada cluster yang ada
Anda dapat memodifikasi label dan taint pada klaster yang ada menggunakan UpdateCluster API. Contoh berikut menunjukkan cara memperbarui KubernetesConfig untuk grup instance:
{ "ClusterName": "my-cluster", "InstanceGroups": [{ "InstanceGroupName": "worker-group-1", "KubernetesConfig": { "Labels": { "env": "prod", "team": "ml-training", "gpu-type": "a100", "cost-center": "ml-ops" }, "Taints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }] } }] }
Saat Anda memperbarui label dan taints, SageMaker HyperPod terapkan perubahan ke semua node dalam grup instance. Layanan mengelola transisi dari keadaan saat ini ke keadaan yang diinginkan, yang dapat Anda pantau menggunakan DescribeCluster API.
Memantau label dan aplikasi noda
SageMaker HyperPod menyediakan APIs untuk memantau status label dan taint saat diterapkan ke node cluster Anda.
Memeriksa status tingkat cluster
Gunakan DescribeCluster API untuk melihat status label dan taint saat ini dan yang diinginkan di tingkat grup instans. Contoh berikut menunjukkan struktur respon:
{ "ClusterName": "my-cluster", "ClusterStatus": "InService", "InstanceGroups": [{ "InstanceGroupName": "worker-group-1", "InstanceType": "ml.p4d.24xlarge", "CurrentInstanceCount": 4, "TargetInstanceCount": 4, "KubernetesConfig": { "CurrentLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "DesiredLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "CurrentTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }], "DesiredTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }] } }] }
Ketika CurrentLabels cocok DesiredLabels dan CurrentTaints cocokDesiredTaints, semua node dalam grup instance memiliki konfigurasi yang ditentukan diterapkan. Jika mereka berbeda, cluster masih dalam proses menerapkan perubahan.
Memeriksa status node individu
Untuk detail tingkat simpul, gunakan DescribeClusterNode API untuk memeriksa label dan konfigurasi taint dari masing-masing node. Contoh berikut menunjukkan struktur respon:
{ "NodeDetails": { "InstanceId":"i-0123456789abcdef0", "InstanceGroupName": "worker-group-1", "InstanceType": "ml.p4d.24xlarge", "InstanceStatus": { "Status": "Running", "Message": "Node is healthy" }, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh", "OnCreate": "on-create.sh" }, "LaunchTime": 1699564800.0, "KubernetesConfig": { "CurrentLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "DesiredLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "CurrentTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }], "DesiredTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }] } } }
Pemantauan tingkat simpul berguna untuk pemecahan masalah saat label atau taint tidak diterapkan dengan benar ke node tertentu, atau saat Anda perlu memverifikasi konfigurasi instance tertentu.
Awalan yang dicadangkan
Awalan tertentu dicadangkan untuk penggunaan sistem dan tidak boleh digunakan untuk label atau noda khusus. Awalan berikut dicadangkan:
-
kubernetes.io/- Dicadangkan untuk komponen inti Kubernetes -
k8s.io/- Dicadangkan untuk komponen inti Kubernetes -
sagemaker.amazonaws.com/- Dicadangkan untuk SageMaker HyperPod -
eks.amazonaws.com/- Dicadangkan untuk Amazon EKS -
k8s.aws/- Dicadangkan untuk Amazon EKS -
karpenter.sh/- Dicadangkan untuk penskalaan otomatis Karpenter
Label dan taint dengan awalan ini dikelola oleh komponen sistem dan tidak boleh ditimpa dengan nilai kustom.