

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
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints"></a>

 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
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-use-cases"></a>

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
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-configure"></a>

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.

`KubernetesConfig`Parameternya 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 `KubernetesConfig` bersama dengan label yang sudah ada yang ingin Anda simpan
+ **Memperbarui label atau noda** - Ubah nilai `KubernetesConfig` untuk 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
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-create"></a>

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`, dan `gpu-type=a100`
+ **Taints** - Dua taint dikonfigurasi untuk mencegah penjadwalan pod yang tidak diinginkan

### Memperbarui label dan noda pada cluster yang ada
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-update"></a>

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
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-monitor"></a>

SageMaker HyperPod menyediakan API untuk memantau status label dan taint saat diterapkan ke node cluster Anda.

### Memeriksa status tingkat cluster
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-cluster"></a>

Gunakan `DescribeCluster` API untuk melihat status label dan taint saat ini dan yang diinginkan di tingkat grup instans. Contoh berikut menunjukkan struktur respons:

```
{
    "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` cocok`DesiredTaints`, semua node dalam grup instance memiliki konfigurasi yang ditentukan diterapkan. Jika mereka berbeda, cluster masih dalam proses menerapkan perubahan.

### Memeriksa status node individu
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-node"></a>

Untuk detail tingkat simpul, gunakan `DescribeClusterNode` API untuk memeriksa label dan konfigurasi taint dari masing-masing node. Contoh berikut menunjukkan struktur respons:

```
{
    "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"
            }]
        }
    }
}
```

Node-level pemantauan berguna untuk pemecahan masalah ketika label atau taint tidak diterapkan dengan benar ke node tertentu, atau ketika Anda perlu memverifikasi konfigurasi instance tertentu.

## Awalan yang dicadangkan
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-reserved-prefixes"></a>

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 noda dengan awalan ini dikelola oleh komponen sistem dan tidak boleh ditimpa dengan nilai khusus.