728x90
반응형
SMALL
학습내용
- Kubernetes(k8s)
- Kubernetes 아키텍처
- MiniKube
- MiniKube 모니터링
학습정리
1. Kubernetes(k8s) 소개
- 테이너화된 애플리케이션을 자동으로 배포, 확장 및 운영할 수 있도록 해주는 오픈소스 오케스트레이션 플랫폼
- 컨테이너 오케스트레이션(Container Orchestration)
- 필요성
- 실제 사용 서비스를 운용할 때는 1개 서버만 운용하지 않음 -> n개의 서버에 컨테이너를 배포 -> 수동으로 제어하기 힘듬 -> 컨테이너가 많아질수록 복잡 -> 수동 제어 부분을 자동화
- 주요기능
- 자동 배포 및 롤백
- 새로운 컨테이너를 원하는 환경에 자동으로 배포하고, 문제가 발생하면 이전 버전으로 롤백할 수 있음.
- 자동 확장(스케일링)
- 트래픽 변화에 따라 컨테이너 개수를 자동으로 증가 또는 감소시킴.
- 로드 밸런싱 및 서비스 디스커버리
- 여러 개의 컨테이너 간에 트래픽을 자동으로 분산하여 부하를 조절하고, 컨테이너들이 서로를 쉽게 찾을 수 있도록 네트워크 설정을 제공.
- 자원 할당 및 관리
- CPU, 메모리 등 시스템 자원을 효율적으로 배분하여 운영 비용 절감.
- 모니터링 및 자동 복구(Self-healing)
- 장애가 발생한 컨테이너를 자동으로 재시작하거나 교체하여 시스템 안정성을 높임.
- 자동 배포 및 롤백
- 대표적인 컨테이너 오케스트레이션 도구
- Kubernetes(k8s)
- Docker Swarm
- Apache Mesos/Marathon
- 필요성
2. Kubernetes 아키텍처

- Control Plane (컨트롤 플레인 / Master Node)
- 클러스트를 관리하는 중앙 제어 시스템으로 여러 개의 Worker Node를 제어
- 구성요소
구성 요소 설명 API Server (kube-apiserver) - 쿠버네티스의 핵심 API 엔드포인트
- 모든 요청을 처리하고 인증/인가 수행Controller Manager (kube-controller-manager) - 클러스터 상태를 지속적으로 모니터링
- 필요한 경우 새로운 Pod를 생성하거나 삭제Scheduler (kube-scheduler) - 생성된 Pod를 적절한 워커 노드에 배치 etcd - 쿠버네티스의 분산 키-값 저장소
- 클러스터의 모든 상태 정보 저장
- Worker Node (워커 노드)
- 컨테이너가 실제로 실행되는 서버
- 구성요소
구성 요소 설명 Kubelet - 컨트롤 플레인과 통신하며, 해당 노드에서 Pod를 관리 Container Runtime - 컨테이너를 실행하는 엔진(Docker, containerd, CRI-O 등) Kube Proxy - 네트워크 라우팅을 담당하며, 서비스 간 통신을 관리 Pod - 컨테이너를 포함하는 쿠버네티스의 최소 배포 단위
3. MiniKube
Kubernetes를 로컬 환경에서 단일 노드 클러스터로 실행할 수 있도록 설계된 도구입니다.
minikube 기본 사용법
설치 및 설정
# Mac에서 minikube 설치 brew install minikube # minikube 실행 minikube start # 기본 드라이버 안잡힐 경우 드라이버 지정 minikube start --driver=docker
상태 확인
# 클러스터 상태확인 minikube status # 상태 결과 minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured
정지 및 삭제
# 정지 minikube stop #클러스터 삭제 minikube delete
kubectl
Kubernetes 클러스터와 상호 작용하는 표준 커맨드라인 도구
기본 명령어
# 클러스터 정보 확인 kubectl version kubectl cluster-info # 노드 목록 조회 kubectl get nodes # 파드, 서비스 및 기타 리소스 조회 kubectl get pods kubectl get services # 새로운 파드 배포 kubectl run my-pod --image=nginx --port=80 # 리소스 삭제 kubectl delete pod my-pod # 매니페스트 파일을 사용한 리소스 관리 kubectl apply -f my-resource.yaml # 실팽 중인 파드와 상호작용 kubectl exec -it my-pod -- /bin/bash
4. MiniKube 모니터링
기본 도구 및 명령어
# 클러스터의 현재 상태 확인 minikube status #클러스터에 있는 노드의 상태 확인 kubectl get nodes #노드 및 파드의 리소스 사용량 모니터링 kubectl top nodes kubectl top pods # 웹으로 클러스터의 시각적 모니터링 수행 minikube dashboard
트러블 슈팅
- 문제 진단 방법
- kubectl describe pods {POD_NAME} : 해당 파드 상세 정보 확인 후 에러 메시지 분석
- kubectl logs {POD_NAME} : 파드의 로그를 확인하여 문제 원인 파악
- minikube logs : minikube 자체 로그 확인하여 문제 진단
- 문제 진단 방법
리소스 부족
minikube의 CPU 및 메모리 할당량 조정
# minikube 정시 minikube stop # 메모리 및 cpu 할당 minikube start --memory 4096 --cpu 2
추가 모니터링 툴
- OpenLens 추후에 확인
728x90
반응형
LIST
'TIL' 카테고리의 다른 글
10_3.k8s Service 및 Ingress 컨트롤러 실습 (0) | 2025.03.03 |
---|---|
10_2.k8s Pod와 Deployment 관리 실습 (1) | 2025.02.27 |
9_5.Docker 보안 및 운영 관리 (0) | 2025.02.21 |
9_4.Docker 를 활용한 Log 관리 (0) | 2025.02.20 |
9_3.Docker 네트워크 및 데이터 관리 (0) | 2025.02.20 |