Metrics Server는 Kubernetes 내장 자동 확장 파이프라인을 위한 확장 가능하고 효율적인 컨테이너 리소스 지표 소스입니다.
Metrics Server는 Kubelets에서 리소스 측정항목을 수집하고 수평형 Pod Autoscaler 및 수직형 Pod Autoscaler에서 사용할 수 있도록 Metrics API를 통해 Kubernetes apiserver에 이를 노출합니다. Metrics API는 kubectl top
통해 액세스할 수도 있으므로 자동 확장 파이프라인을 더 쉽게 디버깅할 수 있습니다.
주의
Metrics Server는 자동 크기 조정 목적으로만 사용됩니다. 예를 들어 측정항목을 모니터링 솔루션으로 전달하거나 모니터링 솔루션 측정항목의 소스로 사용하지 마세요. 이러한 경우 Kubelet /metrics/resource
엔드포인트에서 직접 측정항목을 수집하세요.
Metrics Server는 다음을 제공합니다.
다음과 같은 용도로 Metrics Server를 사용할 수 있습니다.
다음이 필요한 경우에는 Metrics Server를 사용하지 마세요.
지원되지 않는 사용 사례의 경우 Prometheus와 같은 전체 모니터링 솔루션을 확인하세요.
Metrics Server에는 클러스터 및 네트워크 구성에 대한 특정 요구 사항이 있습니다. 이러한 요구 사항은 모든 클러스터 배포에 대한 기본값이 아닙니다. Metrics Server를 사용하기 전에 클러스터 배포가 다음 요구 사항을 지원하는지 확인하세요.
--kubelet-insecure-tls
Metrics Server에 전달하여 인증서 유효성 검사를 비활성화해야 함).hostNetwork
활성화된 경우 노드 IP 및 사용자 지정 포트)에 연결해야 합니다. 제어 평면과 노드 간 통신에 대해 자세히 알아보세요..status.addresses
의 주소 및 .status.daemonEndpoints.kubeletEndpoint.port
필드의 포트(기본값 10250) Metrics Server는 kubelet-preferred-address-types
명령줄 플래그(매니페스트의 기본 InternalIP,ExternalIP,Hostname
)에서 제공하는 목록을 기반으로 첫 번째 노드 주소를 선택합니다. Metrics Server는 YAML 매니페스트에서 직접 설치하거나 공식 Helm 차트를 통해 설치할 수 있습니다. Components.yaml 매니페스트에서 최신 Metrics Server 릴리스를 설치하려면 다음 명령을 실행하세요.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
이전 릴리스에 대한 설치 지침은 Metrics Server 릴리스에서 찾을 수 있습니다.
메트릭 서버 | 측정항목 API 그룹/버전 | 지원되는 Kubernetes 버전 |
---|---|---|
0.7.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.6.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.5.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.4.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.3.x | metrics.k8s.io/v1beta1 | 1.8-1.21 |
*v1.16보다 낮은 Kubernetes 버전에서는 --authorization-always-allow-paths=/livez,/readyz
명령줄 플래그를 전달해야 합니다.
Metrics Server는 YAML 매니페스트에서 직접 또는 replicas
값을 1
보다 크게 설정하여 공식 Helm 차트를 통해 고가용성 모드로 설치할 수 있습니다. high-availability.yaml 매니페스트에서 고가용성 모드로 최신 Metrics Server 릴리스를 설치하려면 다음 명령을 실행하세요.
Kubernetes v1.21+에서:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
Kubernetes v1.19-1.21에서:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
메모
이 구성을 위해서는 Metrics Server를 예약할 수 있는 노드가 2개 이상 있는 클러스터가 필요합니다 .
또한 이 고가용성 구성의 효율성을 극대화하려면 Metrics Server로 전송된 요청이 두 인스턴스 간에 로드 밸런싱되도록 --enable-aggregator-routing=true
CLI 플래그를 kube-apiserver에 추가하는 것이 좋습니다 .
Helm 차트는 이 저장소 내의 추가 구성 요소로 유지 관리되며 gh-pages
분기에서 지원되는 차트 저장소에 릴리스됩니다. 차트의 새 버전은 각 Metrics Server 릴리스마다 릴리스될 예정이며 필요한 경우 독립적으로 릴리스될 수도 있습니다. master
브랜치의 차트는 마지막 릴리스 이후 수정 사항이 포함될 수 있으므로 직접 참조해서는 안 됩니다. 차트 코드를 보려면 차트 릴리스 태그를 사용하세요.
Metrics Server에는 루트가 아닌 권한이 있는 포트에 바인딩하려면 CAP_NET_BIND_SERVICE
기능이 필요합니다. PSS 또는 기타 메커니즘을 사용하여 Pod 기능을 제한하는 환경에서 Metrics Server를 실행하는 경우 Metrics Server가 이 기능을 사용할 수 있는지 확인하세요. 이는 Metrics Server가 권한이 없는 포트에 바인딩하는 포트를 변경하기 위해 --secure-port
플래그를 사용하는 경우에도 적용됩니다.
v0.5.0부터 Metrics Server에는 최대 100개 노드까지 대부분의 클러스터 구성에 대해 우수한 성능을 보장하는 기본 리소스 요청이 제공됩니다.
Metrics Server 리소스 사용량은 확장성 봉투를 생성하는 여러 독립 차원에 따라 달라집니다. 기본 Metrics Server 구성은 아래 나열된 임계값을 초과하지 않는 클러스터에서 작동해야 합니다.
수량 | 네임스페이스 임계값 | 클러스터 임계값 |
---|---|---|
#노드 | 해당 없음 | 100 |
#노드당 포드 | 70 | 70 |
#HPA를 사용한 배포 | 100 | 100 |
클러스터의 노드 수에 따라 리소스를 비례적으로 조정할 수 있습니다. 100개가 넘는 노드로 구성된 클러스터의 경우 다음을 추가로 할당합니다.
리소스 요청을 낮추기 위해 동일한 접근 방식을 사용할 수 있지만 이것이 노드당 최대 Pod 수와 같은 다른 확장성 차원에 영향을 미칠 수 있는 경계가 있습니다.
클러스터 설정에 따라 Metrics Server 컨테이너에 전달된 플래그를 변경해야 할 수도 있습니다. 가장 유용한 플래그:
--kubelet-preferred-address-types
- 특정 노드에 연결하기 위한 주소를 결정할 때 사용되는 노드 주소 유형의 우선순위(기본값 [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP])--kubelet-insecure-tls
- Kubelet에서 제공하는 인증서 제공의 CA를 확인하지 않습니다. 테스트 목적으로만 사용됩니다.--requestheader-client-ca-file
- 들어오는 요청에서 클라이언트 인증서를 확인하기 위한 루트 인증서 번들을 지정합니다.--node-selector
- 라벨을 기반으로 지정된 노드에서 측정항목을 스크랩하는 작업을 완료할 수 있습니다.다음을 실행하여 Metrics Server 구성 플래그의 전체 목록을 얻을 수 있습니다.
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
Metrics Server는 Kubernetes 모니터링 아키텍처에 설명된 핵심 메트릭 파이프라인의 구성 요소입니다.
자세한 내용은 다음을 참조하세요.
문제를 게시하기 전에 먼저 자주 묻는 질문(FAQ)과 알려진 문제를 확인하세요.
커뮤니티 페이지에서 Kubernetes 커뮤니티에 참여하는 방법을 알아보세요.
다음 주소로 이 프로젝트의 관리자에게 연락할 수 있습니다.
이 프로젝트는 SIG Instrumentation에서 관리합니다.
Kubernetes 커뮤니티 참여에는 Kubernetes 행동 강령이 적용됩니다.