

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 do Karpenter
<a name="eksctl-karpenter"></a>

 `eksctl`fornece suporte para adicionar o [Karpenter](https://karpenter.sh/) a um cluster recém-criado. Ele criará todos os pré-requisitos necessários descritos na seção [Introdução](https://karpenter.sh/docs/getting-started/) do Karpenter, incluindo a instalação do próprio Karpenter usando o Helm. Atualmente, oferecemos suporte à instalação de versões`0.28.0+`. Consulte a seção de [compatibilidade do Karpenter](https://karpenter.sh/docs/upgrading/compatibility/) 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)](https://karpenter.sh/docs/concepts/nodepools/) e [NodeClass(es)](https://karpenter.sh/docs/concepts/nodeclasses/) para permitir que o Karpenter comece a adicionar nós ao cluster.

A `nodeClassRef` seção NodePool “s” deve corresponder ao nome de um`EC2NodeClass`. 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
<a name="_automatic_security_group_tagging"></a>

 `eksctl`marca automaticamente o grupo de segurança de nós compartilhados do cluster com `karpenter.sh/discovery` quando o Karpenter está habilitado (`karpenter.version`especificado) 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\$1, os provisionadores foram descontinuados e substituídos por. [NodePool](https://karpenter.sh/docs/concepts/nodepools/)