목록으로

Programming Notes

Kubernetes v1.36: Cloud Controller Manager의 라우트 동기화를 위한 새로운 메트릭

Kubernetes v1.36에서는 k8s.io/cloud-provider의 Cloud Controller Manager(CCM) 라우트 컨트롤러 구현에 새로운 알파 카운터 메트릭인 route_controller_route_sync_total이 도입되었습니다. 이 메트릭은 클라우드 제공업체와 라우트(Route)가 동기화될 때마다 증가합니다.

워치(Watch) 기반 라우트 조정(Reconciliation) A/B 테스트하기

이 메트릭은 운영자가 Kubernetes v1.35에서 도입된 CloudControllerManagerWatchBasedRoutesReconciliation 기능 게이트(feature gate)를 검증하는 데 도움을 주기 위해 추가되었습니다. 해당 기능 게이트는 라우트 컨트롤러를 고정 주기 루프 방식에서 노드에 실제 변경 사항이 발생할 때만 조정하는 워치(Watch) 기반 방식으로 전환합니다. 이를 통해 인프라 제공업체에 대한 불필요한 API 호출을 줄여 속도 제한(rate-limited) API에 가해지는 압박을 완화하고, 운영자가 가용 쿼터를 더 효율적으로 사용할 수 있게 해줍니다.

이를 A/B 테스트하려면, 기능 게이트가 비활성화된 상태(기본값)와 활성화된 상태에서의 route_controller_route_sync_total 값을 비교해 보세요. 노드 변경이 빈번하지 않은 클러스터에서는 기능 게이트를 활성화했을 때 동기화 횟수가 크게 줄어드는 것을 확인할 수 있습니다.

예시: 예상되는 동작

기능 게이트가 비활성화된 경우 (기본 고정 주기 루프), 노드 변경 여부와 상관없이 카운터가 일정하게 증가합니다.

# 노드 변경 없이 10분이 지난 후
route_controller_route_sync_total 60
# 20분이 지났지만 여전히 노드 변경이 없는 상태
route_controller_route_sync_total 120

기능 게이트가 활성화된 경우 (워치 기반 조정), 노드가 실제로 추가, 삭제 또는 업데이트될 때만 카운터가 증가합니다.

# 노드 변경 없이 10분이 지난 후
route_controller_route_sync_total 1
# 20분이 지났지만 여전히 노드 변경이 없는 상태 — 카운터 변화 없음
route_controller_route_sync_total 1
# 새로운 노드가 클러스터에 조인됨 — 카운터 증가
route_controller_route_sync_total 2

이러한 차이는 노드 변경이 거의 없는 안정적인 클러스터에서 특히 명확하게 나타납니다.

피드백은 어디에서 주면 되나요?

의견이 있으시면 다음 채널 중 하나를 통해 언제든지 연락해 주세요.

더 자세히 알아보려면?

상세한 내용은 KEP-5237을 참고하세요.