6.1 클러스터 사이징과 스케일링
- 트래픽과 비용은 반비례한다.
6.1.1 클러스터 용량 계획 세우기
마스터 노드
- 안정적인 k8s cluster를 위한 최소한의 마스터노드 개수는 3개이다.
- 단일 노드는 HA가 안되고, 2개의 노드는 과반수가 안되어 리더 선정에 문제가 발생한다.
워커 노드
- 노드 장애를 고려하여 최소 2개의 워커노드로 구성한다.
- 즉, 모든 파드의 Replica를 최소 두개씩 실행하는 것을 권장한다.
- k8s 스케줄러가 노드 간에 워크로드를 항상 균등할당하지 않기에, 노드는 많을 수록 좋다.
6.1.2 노드와 인스턴스
- 노드의 여유 용량이 많아 비용 낭비가 발생하지 않게한다.
- AWS로 노드 구성 시, 최소 인스턴스 스펙은 vCPU 1개 이상, 메모리 4GB 이상이다.
6.1.3 클러스터 스케일링
- 다운스케일링 : 클러스터 관리도구 또는 kubectl drain을 통해 노드의 파드를 비운다.
- 오토스케일링 : 기본적으로 제공되는 경우가 많으며, 필요할 때만 활성화시킨다.
6.2 적합성 검사
6.2.2 Sonobuoy 적합성 테스트
- Sonobuoy는 k8s 클러스터의 적합성(Conformance) 진단을 위해 널리 사용되는 도구이다.
- 클러스터가 CNCF 적합성 요건을 충족하는지 검증하며, 표준에 부합하는지 확인한다.
검사 예시

sonobuoy run --mode=certified-conformance
6.3 검증과 검사
K8Guard
- k8s 클러스터의 문제를 확인하고 잘못된 부분에 대한 알람을 보낼 수 있다.
- 예시로, 컨테이너 이미지 크기가 1GB크거나, Ingress 규칙이 어디서든 접속 허용하는 경우
- 프로메테우스와 같은 시스템에 매트릭을 제공하여 모니터링할 수 있다.
Copper
- k8s 매니페스트를 검사하는 도구
쿠버네티스 감사 로깅
- 문제 발생 시, 문제의 원인과 수정한 작업 로그를 확인할 수 있다.
6.4 카오스 테스팅
- 고가용성을 검증하는 확실한 방법은 클러스터 노드를 제거하고 확인하는 방법이다.
- 랜덤하게 리소스를 종료하고, 시간을 많이 잡아먹지 않게 카오스 테스트하는 툴을 이용한다.
- 개발환경 뿐만 아니라 운영환경에서도 테스팅되어야 한다.
- 카오스 테스팅을 자동화하여 지속적으로 실행하여, 신뢰성을 높여야 한다.
카오스 엔지니어링 관련 툴
- chaoskube / kube-monkey 가 있다.
- 클러스터 파드를 무작위로 종료시킨다.
- 기본적으로는 dry-run 모드로, 실제로 종료하지는 않는다.
- 테스팅할 특정 기간 및 시간, 빈도 등을 설정할 수 있다.
'Infra > Kubernetes' 카테고리의 다른 글
| 쿠버네티스를 활용한 네이티브 데브옵스 - 8장 컨테이너 실행하기 (0) | 2024.11.09 |
|---|---|
| 쿠버네티스를 활용한 네이티브 데브옵스 - 7장 유용한 쿠버네티스 도구 (0) | 2024.10.19 |
| 쿠버네티스를 활용한 네이티브 데브옵스 - 5장 리소스 관리하기 (0) | 2024.10.05 |
| 쿠버네티스를 활용한 네이티브 데브옵스 - 4장 오브젝트 다루기 (0) | 2024.09.27 |
| 쿠버네티스를 활용한 네이티브 데브옵스 - 3장 쿠버네티스 구축하기 (0) | 2024.09.18 |