Carpenter Support - Eksctl-Benutzerhandbuch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Carpenter Support

eksctlbietet Unterstützung für das Hinzufügen von Karpenter zu einem neu erstellten Cluster. Dadurch werden alle notwendigen Voraussetzungen geschaffen, die im Abschnitt Erste Schritte von Karpenter beschrieben sind, einschließlich der Installation von Karpenter selbst mithilfe von Helm. Wir unterstützen derzeit die Installation von Versionen. 0.28.0+ Weitere Informationen finden Sie im Abschnitt zur Kompatibilität von Karpenter.

Die folgende Cluster-Konfiguration beschreibt eine typische Karpenter-Installation:

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

Die Version ist die Version von Karpenter, wie sie in ihrem Helm-Repository zu finden ist. Die folgenden Optionen können ebenfalls eingestellt werden:

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

OIDC muss definiert sein, um Karpenter zu installieren.

Sobald Karpenter erfolgreich installiert wurde, fügen Sie NodePool(s) und NodeClass(es) hinzu, damit Karpenter mit dem Hinzufügen von Knoten zum Cluster beginnen kann.

Der nodeClassRef Abschnitt NodePool s muss dem Namen eines entsprechen. EC2NodeClass Beispiel:

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

Beachten Sie, dass Sie einen von role oder instanceProfile für Startknoten angeben müssen. Wenn Sie instanceProfile den Namen des von erstellten Profils verwenden möchten, eksctl folgt das Muster:eksctl-KarpenterNodeInstanceProfile-<cluster-name>.

Automatisches Tagging von Sicherheitsgruppen

eksctlkennzeichnet die Sicherheitsgruppe des Clusters mit gemeinsam genutztem Knoten automatischkarpenter.sh/discovery, wenn sowohl Karpenter aktiviert (karpenter.versionangegeben) ist als auch das karpenter.sh/discovery Tag in vorhanden ist. metadata.tags Dies ermöglicht die Kompatibilität mit dem AWS Load Balancer Controller.

Hinweis: Mit Karpenter 0.32.0+ sind Provisioners veraltet und wurden durch ersetzt. NodePool