기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Karpenter 지원
eksctl는 새로 생성된 클러스터에 Karpenter0.28.0+. 자세한 내용은 Karpenter 호환성
다음 클러스터 구성은 일반적인 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
버전은 헬름 리포지토리에서 찾을 수 있는 Karpenter의 버전입니다. 다음 옵션도 설정할 수 있습니다.
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
Karpenter를 설치하려면 OIDC를 정의해야 합니다.
Karpenter가 성공적으로 설치되면 NodePool(s)
NodePool의 nodeClassRef 섹션은의 이름과 일치해야 합니다EC2NodeClass. 예:
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
instanceProfile 휴지통 노드에는 role 또는 중 하나를 지정해야 합니다. instanceProfile에서 생성한 프로필의 이름을 사용하도록 선택한 경우 패턴은 eksctl입니다eksctl-KarpenterNodeInstanceProfile-<cluster-name>.
자동 보안 그룹 태그 지정
eksctl Karpenter가 활성화(karpenter.version 지정)되어 있고 태그가에 있는 karpenter.sh/discovery 경우가 클러스터의 공유 노드 보안 그룹에 자동으로 karpenter.sh/discovery 태그를 지정합니다metadata.tags. 이렇게 하면 AWS Load Balancer Controller 호환성이 활성화됩니다.
참고로 karpenter 0.32.0 이상에서는 Provisioners가 더 이상 사용되지 않으며 NodePool