이 섹션에서는 K3s의 최소 리소스 요구 사항을 결정하기 위한 테스트 결과를 캡처합니다.

결과는 다음과 같이 요약됩니다.

구성프로세서최소 CPUKINE/SQLITE시 최소램내장 ETCD시 최소램
워크로드가 있는 K3s 서버Intel® Xeon® Platinum 8124M CPU, 3.00 GHz코어의 10%768 M896 M
단일 에이전트가 있는 K3s 서버Intel® Xeon® Platinum 8124M CPU, 3.00 GHz코어의 10%512 M768 M
K3s 에이전트Intel® Xeon® Platinum 8124M CPU, 3.00 GHz코어의 5%256 M256 M
워크로드가 있는 K3s 서버Pi4B BCM2711, 1.50 GHz코어의 20%768 M896 M
단일 에이전트가 있는 K3sPi4B BCM2711, 1.50 GHz코어의 20%512 M768 M
K3s 에이전트Pi4B BCM2711, 1.50 GHz코어의 10%256 M256 M

리소스 테스트의 범위

리소스 테스트는 다음과 같은 문제를 해결하기 위한 것입니다.

  • 단일 노드 클러스터에서 실제 워크로드가 클러스터에 배포된다고 가정하고 전체 K3 스택 서버 스택을 실행하기 위해 확보해야 할 CPU, 메모리 및 IOP의 최소 양을 결정합니다.
  • 에이전트(작업자) 노드에서 Kubenetes 및 K3s 제어부 구성 요소(kubelet 및 k3s 에이전트)를 위해 확보해야 하는 CPU, 메모리 및 IOP의 합법적인 최소 양을 결정합니다.

기준선 측정에 포함된 구성요소

테스트된 구성 요소는 다음과 같습니다.

  • K3s 1.19.2(패키지 구성 요소 모두 사용)를 선택합니다.
  • Prometheus + Grafana 모니터링 스택입니다.
  • Kubernetes 예제 PHP Guestbook 앱입니다.

다음은 K3 패키지 구성 요소(Traefik Ingress, Klipper lb, 로컬 경로 스토리지)를 표준 모니터링 스택(Prometheus 및 Grafana)과 Guestbook 예제 앱을 실행하는 안정적인 시스템을 위한 기준선 수치입니다.

IOPS를 포함한 리소스 수치는 Kubernetes 데이터스토어 및 제어부에만 해당되며 시스템 레벨 관리 에이전트 또는 로깅, 컨테이너 이미지 관리 또는 워크로드별 요구사항에 대한 오버헤드는 포함되지 않습니다.

방법론

독립 실행형 Prometheus v2.21.0 인스턴스를 사용하여 apt를 통해 설치된 prometheus-node-exporter를 사용하여 호스트 CPU, 메모리 및 디스크 IO 통계를 수집했습니다.

systemd-cgtop은 systemd cgroup 수준의 CPU 및 메모리 사용률을 확인하는 데 사용되었습니다. system.slice/k3s.service는 K3s와 containerd 모두에 대한 리소스 사용률을 추적하는 반면 개별 포드는 kubepods 계층 아래에 있습니다.

서버 및 에이전트 프로세스에 통합된 kubelet exporter를 사용하여 process_resident_memory_bytes 및 go_memstats_alloc_bytes 메트릭에서 추가적인 K3s 메모리 사용률 데이터가 수집되었습니다.

활용률 수치는 설명된 워크로드를 실행하는 노드에서 안정적인 상태 운영을 통해 얻은 95번째 백분위수 판독값을 기반으로 했습니다.

환경

OS: Ubuntu 20.04 x86_64, arch64입니다.

하드웨어:

  • AWS c5d.xlarge – 4코어, 8GB RAM, NVME SSD
  • Rasberry Pi 4 모델 B – 4코어, 8GB RAM, 클래스 10 SDHC

기준 리소스 요구 사항

이 섹션에서는 K3s 에이전트, 워크로드가 있는 K3s 서버 및 한 에이전트가 있는 K3s 서버에 대한 최소 리소스 요구 사항을 결정하기 위한 테스트 결과를 캡처합니다.

워크로드가 있는 K3s 서버

이는 K3s 서버가 워크로드와 리소스를 공유하는 단일 노드 클러스터의 요구 사항입니다.

CPU 요구 사항은 다음과 같습니다.

리소스 요구사항실험된 프로세서
코어의 10%Intel® Xeon® Platinum 8124M CPU, 3.00 GHz
코어의 20%Low-power processor such as Pi4B BCM2711, 1.50 GHz

IOPS와 메모리 요구사항

실험된 데이터스토어IOPSKBi/SEC레이턴시RAM
Kine/SQLite10500< 10 ms768 M
내장 etcd20250< 5 ms896 M

단일 에이전트가 있는 K3s 클러스터

이는 K3s 서버 노드와 K3s 에이전트가 있지만 워크로드가 없는 K3s 클러스터의 기본 요구 사항입니다.

CPU 요구 사항은 다음과 같습니다.

리소스 요구사항실험된 프로세서
코어의 10%Intel® Xeon® Platinum 8124M CPU, 3.00 GHz
코어의 20%Low-power processor such as Pi4B BCM2711, 1.50 GHz

IOPS와 메모리 요구사항

실험된 데이터스토어IOPSKBi/SEC레이턴시RAM
Kine/SQLite10500< 10 ms512 M
내장 etcd50250< 5 ms768 M

K3s Agent

CPU 요구 사항은 다음과 같습니다.

리소스 요구사항실험된 프로세서
코어의 5%Intel® Xeon® Platinum 8124M CPU, 3.00 GHz
코어의 10%Low-power processor such as Pi4B BCM2711, 1.50 GHz

256 M의 RAM이 필요합니다.

분석

이 섹션에서는 K3 서버 및 에이전트 활용률에 가장 큰 영향을 미치는 사항과 에이전트 및 워크로드의 간섭으로부터 클러스터 데이터스토어를 보호하는 방법에 대해 설명합니다.

기본 리소스 사용률 드라이버

K3s의 서버 활용률은 주로 Kubernetes 데이터스토어(kine 또는 etcd), API 서버, Controller-Manager 및 Scheduler 제어 루프 지원과 시스템 상태 변경에 필요한 관리 작업을 통해 결정됩니다. 리소스 생성/수정/삭제와 같이 Kubernetes 제어부에 추가 부하를 가하는 작업은 일시적인 사용률 급증을 야기합니다. Kubernetes 데이터스토어를 광범위하게 사용하는 연산자 또는 애플리케이션(예: Rancher 또는 기타 Operator 유형 애플리케이션)을 사용하면 서버의 리소스 요구 사항이 증가합니다. 노드를 추가하거나 많은 클러스터 리소스를 생성하여 클러스터를 확장하면 서버의 리소스 요구 사항이 증가합니다.

K3s의 에이전트 활용률 수치는 주로 컨테이너 라이프사이클 관리 제어 루프의 지원에 의해 결정됩니다. 이미지 관리, 스토리지 프로비저닝 또는 컨테이너 생성/파괴와 관련된 작업은 일시적으로 사용률이 급증합니다. 특히 이미지 풀은 이미지 컨텐츠를 디스크로 압축 해제해야 하므로 일반적으로 CPU 및 IO 바인딩이 높습니다. 가능한 경우 리소스 충돌이 없도록 워크로드 저장소(pod 사용 후 삭제 저장소 및 볼륨)를 에이전트 구성 요소(/var/lib/rancher/k3s/agent)에서 분리해야 합니다.

에이전트 및 워크로드가 클러스터 데이터스토어를 방해하지 않도록

서버가 워크로드 포드를 호스팅하는 환경에서 실행할 때는 에이전트와 워크로드 IOPS가 데이터스토어에 영향을 미치지 않도록 주의해야 합니다.

서버 구성 요소(/var/lib/rancher/k3s/server)를 containerd 이미지 저장소를 포함하는 에이전트 구성 요소(/var/lib/rancher/k3s/agent)와 다른 저장 매체에 배치하는 것이 가장 좋습니다.

워크로드 스토리지(pod 사용 후 스토리지 및 볼륨)도 데이터스토어에서 분리해야 합니다.

데이터스토어 처리량 및 지연 시간 요구 사항을 충족하지 못하면 제어부의 응답이 지연되거나 제어부가 시스템 상태를 유지하지 못할 수 있습니다.

출처 : https://rancher.com/docs/k3s/latest/en/installation/installation-requirements/resource-profiling/
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like

[기계번역] K3s : Quick-Start Guide

이 안내서는 기본 옵션이 있는 클러스터를 빠르게 시작하는 데 도움이 됩니다. 설치 섹션에서는 K3를 설정하는 방법에 대해 자세히…

[기계번역] K3s : Architecture

이 페이지에서는 고가용성 K3s 서버 클러스터의 아키텍처와 단일 노드 서버 클러스터와의 차이점을 설명합니다. 또한 에이전트 노드가 K3s 서버에…

[기계번역] K3s

K3s – 가벼운 쿠버네티스 가벼운 쿠버네티스입니다. 설치가 간편하고 메모리가 절반이며 100MB 미만의 바이너리에 모두 포함됩니다. 다음 경우에 적합합니다.…