노드 선언 기능
노드 선언 기능 (node-declared-features)
기능 상태:
Kubernetes v1.36 [beta](기본 활성화)
쿠버네티스 노드는 선언 기능(declared features) 을 사용해, 새롭거나 기능 게이트(feature-gated)로 켜진 특정 기능의 가용성을 보고해요. 컨트롤 플레인 컴포넌트는 이 정보를 활용해 더 나은 결정을 내려요. kube-scheduler는 NodeDeclaredFeatures 플러그인을 통해, Pod가 요구하는 기능을 명시적으로 지원하는 노드에만 Pod가 배치되도록 해요. 또 NodeDeclaredFeatureValidator 승인 컨트롤러는 노드의 선언 기능에 대해 Pod 업데이트를 검증해요.
이 메커니즘은 특히 클러스터 업그레이드 중이거나, 노드들이 모두 같은 기능을 켜고 있지 않을 수 있는 혼합 버전(mixed-version) 환경에서 버전 편차(version skew)를 관리하고 클러스터 안정성을 높여줘요. 이는 새 노드 수준 기능을 도입하는 쿠버네티스 기능 개발자를 위한 것으로 백그라운드에서 동작해요. Pod를 배포하는 애플리케이션 개발자는 이 프레임워크와 직접 상호작용할 필요가 없어요.
동작 방식 (How it Works)
스케줄러 필터링(Scheduler Filtering): 기본 kube-scheduler는 NodeDeclaredFeatures 플러그인을 사용해요. 이 플러그인은:
PreFilter단계에서PodSpec을 확인해 Pod가 요구하는 노드 기능 집합을 추론해요.Filter단계에서 노드의.status.declaredFeatures에 나열된 기능들이 Pod에 대해 추론된 요구를 충족하는지 확인해요.
필요한 기능이 없는 노드에는 Pod가 스케줄되지 않아요. 커스텀 스케줄러도 .status.declaredFeatures 필드를 사용해 비슷한 제약을 적용할 수 있어요.
승인 통제(Admission Control): nodedeclaredfeaturevalidator 승인 컨트롤러는, 바인딩된 노드가 선언하지 않은 기능을 요구하는 Pod를 거부할 수 있어요. 이를 통해 Pod 업데이트 중 발생하는 문제를 방지할 수 있어요.