Suporte Karpenter - Guia do usuário do Eksctl

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á.

Suporte Karpenter

eksctlfornece suporte para adicionar o Karpenter a um cluster recém-criado. Ele criará todos os pré-requisitos necessários descritos na seção Introdução do Karpenter, incluindo a instalação do próprio Karpenter usando o Helm. Atualmente, oferecemos suporte à instalação de versões0.28.0+. Consulte a seção de compatibilidade do Karpenter para obter mais detalhes.

A configuração de cluster a seguir descreve uma instalação típica do Karpenter:

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster-with-karpenter region: us-west-2 version: '1.32' # requires a version of Kubernetes compatible with Karpenter tags: karpenter.sh/discovery: cluster-with-karpenter # here, it is set to the cluster name iam: withOIDC: true # required karpenter: version: '1.2.1' # Exact version should be specified according to the Karpenter compatibility matrix managedNodeGroups: - name: managed-ng-1 minSize: 1 maxSize: 2 desiredCapacity: 1

A versão é a versão do Karpenter, pois pode ser encontrada em seu repositório Helm. As seguintes opções também estão disponíveis para serem definidas:

karpenter: version: '1.2.1' createServiceAccount: true # default is false defaultInstanceProfile: 'KarpenterNodeInstanceProfile' # default is to use the IAM instance profile created by eksctl withSpotInterruptionQueue: true # adds all required policies and rules for supporting Spot Interruption Queue, default is false

O OIDC deve ser definido para instalar o Karpenter.

Depois que o Karpenter for instalado com sucesso, adicione NodePool(s) e NodeClass(es) para permitir que o Karpenter comece a adicionar nós ao cluster.

A nodeClassRef seção NodePool “s” deve corresponder ao nome de umEC2NodeClass. Por exemplo:

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: example annotations: kubernetes.io/description: "Example NodePool" spec: template: spec: requirements: - key: kubernetes.io/arch operator: In values: ["amd64"] - key: kubernetes.io/os operator: In values: ["linux"] - key: karpenter.sh/capacity-type operator: In values: ["on-demand"] - key: karpenter.k8s.aws/instance-category operator: In values: ["c", "m", "r"] - key: karpenter.k8s.aws/instance-generation operator: Gt values: ["2"] nodeClassRef: group: karpenter.k8s.aws kind: EC2NodeClass name: example # must match the name of an EC2NodeClass
apiVersion: karpenter.k8s.aws/v1 kind: EC2NodeClass metadata: name: example annotations: kubernetes.io/description: "Example EC2NodeClass" spec: role: "eksctl-KarpenterNodeRole-${CLUSTER_NAME}" # replace with your cluster name subnetSelectorTerms: - tags: karpenter.sh/discovery: "${CLUSTER_NAME}" # replace with your cluster name securityGroupSelectorTerms: - tags: karpenter.sh/discovery: "${CLUSTER_NAME}" # replace with your cluster name amiSelectorTerms: - alias: al2023@latest # Amazon Linux 2023

Observe que você deve especificar um dos nós de instanceProfile inicialização role ou para eles. Se você optar por usar instanceProfile o nome do perfil criado, eksctl siga o padrão:eksctl-KarpenterNodeInstanceProfile-<cluster-name>.

Marcação automática de grupos de segurança

eksctlmarca automaticamente o grupo de segurança de nós compartilhados do cluster com karpenter.sh/discovery quando o Karpenter está habilitado (karpenter.versionespecificado) e a karpenter.sh/discovery tag existe em. metadata.tags Isso permite a compatibilidade com o AWS Load Balancer Controller.

Observe que com o karpenter 0.32.0+, os provisionadores foram descontinuados e substituídos por. NodePool