본문 바로가기
INFRA/DevOps

Karpenter의 k8s 효율적인 자원관리

by HemMu 2024. 9. 27.

karpenter는 node를 정리 및 통합하는 디-프로비저닝(de-provisioning) 메커니즘이 있다.

pod가 별로 없거나 놀고 있는 node를 정리하여 비용을 아낄 수 있겠다.

1. Consolidation (통합)

  • 기능: consolidation은 클러스터 내에서 자원이 비효율적으로 사용되고 있을 때, 노드를 통합하여 자원을 최적화하는 기능
  • 작동 방식:
    1. Karpenter가 클러스터 내의 자원 사용률을 모니터링
    2. 자원 사용률이 낮은 노드들에서 실행 중인 파드를 다른 노드로 이동할 수 있는지를 체크
    3. 이동이 가능하다면, 자원이 덜 사용되고 있는 노드들을 통합하여 불필요한 노드를 종료
❓ 어떤 노드를 통합할지는 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

 

Disruption

Understand different ways Karpenter disrupts nodes

karpenter.sh

 

'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

댓글