🕰️ 작성일 : 2025.07.16
Q : Karpenter의 NodePool로 생성한 Self-Managed Node Group(SNG)에 대하여 Auto-Repair 기능을 통해서 노드에 대한 자동 복구를 지원 할 수 있나요?
A : Karpenter 1.2 버전부터 NodePool로 생성한 SNG에 대하여 Auto Repair 기능을 제공합니다.
Karpenter 공식 가이드 중 일부 발췌
네트워크 사용 불가능, 디스크 압력, 메모리 압력 또는 노드 진단 에이전트가 보고하는 기타 조건과 같은 노드 상태를 통해 드러날 수 있습니다. 이러한 비정상적인 상태를 감지하면 Karpenter는 클라우드 제공업체가 정의한 복구 정책에 따라 영향을 받는 노드를 자동으로 교체합니다. 노드가 구성된 허용 기간을 초과하여 비정상적인 상태가 지속되면, 문제가 있는 노드를 신속하게 교체하기 위해 표준 배수 및 유예 기간 절차를 건너뛰고 해당 노드 및 해당 노드 클레임을 강제로 종료합니다. 연쇄적인 장애를 방지하기 위해 Karpenter에는 안전 메커니즘이 포함되어 있습니다. NodePool의 노드 중 20% 이상이 비정상적인 경우 수리를 수행하지 않으며, 독립형 노드클레임의 경우 클러스터의 모든 노드에 대해 이 임계값을 평가합니다. 이렇게 하면 노드의 건강하지 않은 상태로 인해 정상적인 노드 종료 절차가 영향을 받을 수 있는 시나리오에서도 최소한의 수동 개입으로 클러스터를 건강한 상태로 유지할 수 있습니다.
NodeRepair=true
로 활성화합니다.NodeRepair=true
을 활성화해야합니다.helm registry logout public.ecr.aws
helm upgrade --install karpenter oci://public.ecr.aws/karpenter/karpenter --version "${KARPENTER_VERSION}" --namespace "${KARPENTER_NAMESPACE}" --create-namespace \\
--set "serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=${KARPENTER_IAM_ROLE_ARN}" \\
--set "settings.clusterName=${CLUSTER_NAME}" \\
--set "settings.interruptionQueue=${CLUSTER_NAME}" \\
--set controller.resources.requests.cpu=1 \\
--set controller.resources.requests.memory=1Gi \\
--set controller.resources.limits.cpu=1 \\
--set controller.resources.limits.memory=1Gi \\
--set settings.featureGates.nodeRepair=true \\ ## featuregates을 통해 nodeRepair을 활성화합니다.
--wait
NodeRepair=true
가 적용 된 것을 확인 할 수 있습니다.