Soporte de Karpenter - Guía del usuario de Eksctl

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Soporte de Karpenter

eksctlproporciona soporte para añadir Karpenter a un clúster recién creado. Creará todos los requisitos previos necesarios descritos en la sección Primeros pasos de Karpenter, incluida la instalación del propio Karpenter mediante Helm. Actualmente, admitimos la instalación de versiones. 0.28.0+ Consulte la sección de compatibilidad de Karpenter para obtener más detalles.

La siguiente configuración de clúster describe una instalación típica de 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

La versión es la versión de Karpenter, tal y como se encuentra en su repositorio Helm. También se pueden configurar las siguientes opciones:

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

Se debe definir el OIDC para poder instalar Karpenter.

Una vez que Karpenter se haya instalado correctamente, añada NodePool(s) y NodeClass(es) para que Karpenter pueda empezar a añadir nodos al clúster.

La NodePool nodeClassRef sección debe coincidir con el nombre de un. EC2NodeClass Por ejemplo:

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

Tenga en cuenta que debe especificar uno de role o instanceProfile cuatro nodos de lanzamiento. Si opta por utilizar instanceProfile el nombre del perfil creado, eksctl siga el patrón:eksctl-KarpenterNodeInstanceProfile-<cluster-name>.

Etiquetado automático de grupos de seguridad

eksctletiqueta automáticamente el grupo de seguridad de nodos compartidos del clúster karpenter.sh/discovery cuando Karpenter está activado (karpenter.versionespecificado) y la karpenter.sh/discovery etiqueta existe en él. metadata.tags Esto permite la compatibilidad con el controlador Load Balancer de AWS.

Tenga en cuenta que con karpenter 0.32.0+, los aprovisionadores han quedado en desuso y se han sustituido por. NodePool