티스토리 뷰

728x90

Kubernetes에서 애플리케이션의 안정성과 가용성을 보장하기 위해 다양한 설정이 필요합니다. 그 중 AutoscalingPodDisruptionBudget(PDB)은 Pod의 수를 조절하고 가용성을 유지하는 데 중요한 역할을 합니다. 이 두 설정은 겉보기에는 비슷한 기능을 제공하는 것처럼 보일 수 있지만, 실제로는 서로 다른 목적을 가지고 있습니다. 이번 글에서는 Autoscaling과 PDB의 차이점, 그리고 왜 두 설정을 함께 사용하는 것이 중요한지에 대해 알아보겠습니다.

Autoscaling 설정의 역할

Autoscaling은 Kubernetes에서 애플리케이션의 부하에 따라 Pod의 개수를 자동으로 조정하는 기능입니다. Horizontal Pod Autoscaler(HPA)가 이 기능을 담당하며, minReplicasmaxReplicas를 통해 최소 및 최대 Pod 수를 설정할 수 있습니다.

  • minReplicas: 부하가 낮아지더라도 유지할 최소한의 Pod 수를 정의합니다.
  • maxReplicas: 부하가 증가하더라도 확장할 수 있는 최대 Pod 수를 정의합니다.

예를 들어, minReplicas: 2로 설정하면 최소 2개의 Pod이 항상 유지됩니다. 이는 애플리케이션이 너무 적은 자원으로 운영되지 않도록 보장합니다. 하지만, 이 설정은 주로 부하 기반으로 작동하며, Pod이 강제로 삭제되거나 노드가 오프라인이 되는 상황에서는 별다른 보호를 제공하지 않습니다.

PodDisruptionBudget(PDB)의 역할

PDB는 Kubernetes 클러스터에서 의도치 않은 중단이나 계획된 유지보수 중에 애플리케이션의 최소 가용성을 보장하기 위해 사용됩니다. PDB는 특정 개수 이상의 Pod이 항상 사용 가능하도록 보장하는 정책을 정의합니다.

  • minAvailable: 항상 가용해야 하는 최소 Pod 수를 정의합니다.
  • maxUnavailable: 동시에 중단될 수 있는 최대 Pod 수를 정의합니다.

예를 들어, PDB가 minAvailable: 2로 설정되어 있으면 클러스터는 항상 최소 2개의 Pod을 정상적으로 작동하게 유지해야 하며, 그 이하로 줄어들 경우 추가적인 중단이 불가능합니다. 이는 주로 클러스터 관리 작업이나 노드 유지보수 중에도 애플리케이션의 가용성을 보장하는 데 필수적입니다.

Autoscaling만으로 충분하지 않은 이유

겉보기에는 Autoscaling의 minReplicas 설정만으로도 특정 수의 Pod이 유지될 것처럼 보입니다. 그러나 Autoscaling은 부하 기반으로 동작하는 반면, PDB는 의도치 않은 중단으로부터 애플리케이션을 보호합니다. 이 차이점은 매우 중요합니다.

  • 의도치 않은 중단: 클러스터의 노드가 종료되거나 유지보수 작업으로 인해 Pod이 강제로 종료되는 경우, Autoscaling의 minReplicas는 이 상황을 고려하지 않습니다. 반면, PDB는 이러한 상황에서도 최소한의 가용성을 유지하도록 보장합니다.
  • 수동 Pod 삭제: 관리자가 수동으로 Pod을 삭제하거나 클러스터가 특정 Pod을 강제로 재배치할 때, Autoscaling은 이를 막지 못할 수 있습니다. PDB는 이 경우에도 최소한의 Pod이 유지되도록 합니다.

PDB와 Autoscaling을 함께 사용하는 이유

결론적으로, Autoscaling과 PDB는 서로 다른 목적을 가지고 있으며, 서로 보완적인 역할을 합니다.

  • Autoscaling은 애플리케이션의 성능을 최적화하고, 부하에 따라 자원을 동적으로 조절합니다.
  • PDB는 애플리케이션의 가용성을 보호하며, 의도치 않은 중단이나 클러스터 관리 작업 중에도 최소한의 Pod 수를 유지합니다.

따라서, 두 설정을 함께 사용하면 부하 기반의 Pod 수 조절과 가용성 유지라는 두 가지 중요한 요구사항을 모두 충족할 수 있습니다.

 

참고

ChatGPT4

 

https://kubernetes.io/docs/tasks/run-application/configure-pdb/

 

Specifying a Disruption Budget for your Application

FEATURE STATE: Kubernetes v1.21 [stable] This page shows how to limit the number of concurrent disruptions that your application experiences, allowing for higher availability while permitting the cluster administrator to manage the clusters nodes. Before y

kubernetes.io

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함