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 Karpenter0.28.0+ Consulte la sección de compatibilidad de Karpenter
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)
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