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 Karpenter0.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)
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