karpenter는 node를 정리 및 통합하는 디-프로비저닝(de-provisioning) 메커니즘이 있다.
pod가 별로 없거나 놀고 있는 node를 정리하여 비용을 아낄 수 있겠다.
1. Consolidation (통합)
- 기능: consolidation은 클러스터 내에서 자원이 비효율적으로 사용되고 있을 때, 노드를 통합하여 자원을 최적화하는 기능
- 작동 방식:
- Karpenter가 클러스터 내의 자원 사용률을 모니터링
- 자원 사용률이 낮은 노드들에서 실행 중인 파드를 다른 노드로 이동할 수 있는지를 체크
- 이동이 가능하다면, 자원이 덜 사용되고 있는 노드들을 통합하여 불필요한 노드를 종료
❓ 어떤 노드를 통합할지는 Karpenter 내부 최적화 알고리즘에 의해 결정되는 것 같다.
spec:
consolidation:
enabled: true
2. TTL (Time-to-Live)
- 기능: ttl(Time-to-Live)은 특정 조건이 만족 될 시 노드를 자동으로 종료하는 기능
- 작동 방식:
- ttlSecondsUntilExpired: 노드가 생성된 후 지정 시간이 지나면, 해당 노드를 자동으로 종료
- ttlSecondsAfterEmpty: 노드에 할당된 Pod가 없을 때, 지정 시간이 지나면 해당 노드를 자동으로 종료
spec:
ttlSecondsUntilExpired: 2592000 # 30일
ttlSecondsAfterEmpty: 30
❓ 동적으로 변화하는 워크로드를 효과적으로 관리하고, 실시간으로 클러스터 자원을 최적화하고자 할 때는 Consolidation.
정적이거나 예측 가능한 워크로드의 노드의 수명을 관리하고, 오랜 시간 사용되지 않는 노드를 자동으로 정리하고자 할 때는 TTL이 더 적합해 보인다.
참고 docs
'INFRA > DevOps' 카테고리의 다른 글
k8s KEDA 사용하기 (0) | 2024.11.25 |
---|---|
Teams Workflow 생성하기 (0) | 2024.08.20 |
Deployments 와 StatefulSets (0) | 2024.04.17 |
[Git] switch/restore (0) | 2024.02.28 |
[K8S] Rollout (0) | 2024.01.08 |
댓글