As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criar uma NodeClass
Importante
Você deve começar com 0 nó no seu grupo de instâncias e deixar o Karpenter lidar com o ajuste de escala automático. Se você começar com mais de 0 nó, o Karpenter reduzirá a escala vertical dos nós para 0.
Uma classe de nó (NodeClass) define as configurações em nível de infraestrutura que se aplicam a grupos de nós no cluster do Amazon EKS, incluindo configuração de rede, configurações de armazenamento e marcação de recursos. HyperPodNodeClassA é um personalizado NodeClass que mapeia grupos de instâncias pré-criados em SageMaker HyperPod, definindo restrições em torno de quais tipos de instância e zonas de disponibilidade são compatíveis com as decisões de escalonamento automático da Karpenter.
Considerações sobre como criar de uma classe de nós
-
Você pode especificar até dez grupos de instâncias em uma
NodeClass. -
Ao usar o particionamento de GPU com MIG (GPU de múltiplas instâncias), o Karpenter pode provisionar automaticamente nós com grupos de instâncias habilitados para MIG. Certifique-se de que seus grupos de instâncias incluam tipos de instância compatíveis com o MIG (ml.p4d.24xlarge, ml.p5.48xlarge ou ml.p5e/p5en.48xlarge) e configure os rótulos MIG apropriados durante a criação do cluster. Para obter mais informações sobre como configurar o particionamento de GPU, consulte. Usando partições de GPU na Amazon SageMaker HyperPod
-
Se rótulos personalizados forem aplicados a grupos de instâncias, você poderá visualizá-los no
desiredLabelscampo ao consultar oHyperpodNodeClassstatus. Isso inclui rótulos de configuração MIG, comonvidia.com/mig.config. Quando os trabalhos recebidos solicitam recursos MIG, o Karpenter escalará automaticamente as instâncias com os rótulos MIG apropriados aplicados. -
Se você optar por excluir um grupo de instâncias, recomendamos removê-lo do seu
NodeClassantes de excluí-lo do seu HyperPod cluster. Se um grupo de instâncias for excluído enquanto for usado em umaNodeClass, aNodeClassserá marcada como nãoReadypara provisionamento e não será usada para operações de ajuste de escala subsequentes enquanto o grupo de instâncias não for removido daNodeClass. -
Quando você remove grupos de instâncias de um
NodeClass, o Karpenter detecta um desvio nos nós que foram gerenciados pelo Karpenter nos grupos de instâncias e interrompe os nós com base em seus controles de orçamento de interrupção. -
As sub-redes usadas pelo grupo de instâncias devem pertencer à mesma AZ. As sub-redes são especificadas usando
OverrideVpcConfigem nível de grupo de instâncias ou em nível de cluster.VpcConfigé usada por padrão. -
No momento, só é possível usar a capacidade sob demanda. Não é possível usar grupos de instâncias com plano de treinamento ou capacidade reservada.
-
Não é possível usar grupos de instâncias com
DeepHealthChecks (DHC). Isso ocorre porque uma DHC leva cerca de 60 a 90 minutos para ser concluída e os pods permanecem em estado pendente durante esse período, o que pode causar provisionamento excessivo.
As etapas a seguir mostram como criar uma NodeClass.
-
Crie um arquivo YAML (por exemplo, nodeclass.yaml) com sua configuração de
NodeClass. -
Aplique a configuração ao cluster usando o kubectl.
-
Faça referência à
NodeClassem sua configuração deNodePool. -
Veja um exemplo de
NodeClassque usa os tipos de instância ml.c5.xlarge e ml.c5.4xlarge:apiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: name: sample-nc spec: instanceGroups: # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created # MaxItems: 10 - auto-c5-xaz1 - auto-c5-4xaz2 -
Aplique a configuração:
kubectl apply -f nodeclass.yaml -
Monitore o NodeClass status para garantir que a condição Pronto no status esteja definida como Verdadeira:
kubectl get hyperpodnodeclass sample-nc -o yamlapiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: creationTimestamp: "<timestamp>" name: sample-nc uid: <resource-uid> spec: instanceGroups: - auto-c5-az1 - auto-c5-4xaz2 status: conditions: // true when all IGs in the spec are present in SageMaker cluster, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: InstanceGroupReady status: "True" type: InstanceGroupReady // true if subnets of IGs are discoverable, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: SubnetsReady status: "True" type: SubnetsReady // true when all dependent resources are Ready [InstanceGroup, Subnets] - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: Ready status: "True" type: Ready instanceGroups: - desiredLabels: - key: <custom_label_key> value: <custom_label_value> - key: nvidia.com/mig.config value: all-1g.5gb instanceTypes: - ml.c5.xlarge name: auto-c5-az1 subnets: - id: <subnet-id> zone: <availability-zone-a> zoneId: <zone-id-a> - instanceTypes: - ml.c5.4xlarge name: auto-c5-4xaz2 subnets: - id: <subnet-id> zone: <availability-zone-b> zoneId: <zone-id-b>