각 NodePool은 EC2NodeClass와 연결되어야 함
•
카펜터가 생성한 노드에만 파드가 배포되도록 테인트 설정 가능
•
노드가 특정 AZ, InstanceType, Architecture(x86/arm)로만 생성되도록 설정 가능
•
서로 다른 노드풀 사이에는 겹치는 조건이 없도록 구성할 것을 권장, 만약 겹치는 조건이 존재해서 특정 파드가 다수의 노드풀 조건을 만족할 경우, 파드는 가중치가 높은 노드풀에 파드 배치
•
카펜터가 생성한 노드에 대한 Expiration 기간 설정 가능
•
Startup 테인트 : Karpenter Agent 설치, 네트워크 설정 등 초기화 이후에 파드를 배치하도록 추가되는 테인트. 파드가 배포되기 전에 삭제됨. 따라서 파드는 이 테인트에 톨러레이트할 필요 없음.
Example
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
template:
metadata:
labels:
annotations:
nodeClassRef:
taints:
startupTaints:
expireAfter: # 기간이 지나면 카펜터에 의해 노드가 Drain + Delete
terminationGracePeriod: # 노드 종료 전 Drain 가능한 여유 시간
requirements: # AZ, InstanceType, Architecture, OS, ... https://karpenter.sh/docs/concepts/nodepools/#well-known-labels
disruption:
# consolidationPolicy:
# consolidateAfter:
# budgets:
limits:
# cpu:
# memory:
# nvidia.com/gpu:
weight: # https://karpenter.sh/docs/concepts/scheduling/#weighted-nodepools
YAML
복사