- Kubernetes(k8s)란?
현재 가장 널리 사용되는 오픈 소스 컨테이너 오케스트레이션 플랫폼으로, 크고 복잡한 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 처리함
cf) k8s (k로 시작하고 s로 끝나는데 사이에 8개의 문자가 있어서)
그외 비슷한 예로 i18n, a11y, l10n, g11n, m17n 등이 있음
- 왜 컨테이너 오케스트레이션이 필요한가?
컨테이너가 많아질수록 관리가 복잡해짐. 여러 개의 컨테이너를 수동으로 관리하는 것은 시간이 많이 걸리며 장애를 일으킬 수 있는 여지가 큼.
컨테이너 오케스트레이션 사용 시 이점
1) 자동화된 배포
2) 확장 및 로드 밸런싱
3) 서비스 디스커버리와 네트워킹
4) 상태 관리와 지속성
5) 자원 모니터링과 로깅
대표적인 컨테이너 오케스트레이션 도구
1) Kubernetes(k8s)
2) Docker Swarm
3) Apache Mesos/Marathon
- Kubernetes 아키텍처
Kubernetes의 주요 구성요소
: Kubernetes는 컨테이너화된 애플리케이션의 배포, 관리, 확장을 자동화하는 시스템임
: 이 시스템의 아키텍처는 주로 두 가지 유형의 노드(마스터 노드
, 워커 노드
)로 구성되어 있음
1) 마스터 노드
: 클러스터의 전체적인 관리 및 조정을 담당하며, 클러스터의 상태를 중앙에서 제어함
: 아래 구성 요소를 포함함
-> API 서버
: 클러스터와의 모든 통신이 이루어지는 허브임
-> 클러스터 스토어(etcd)
: 모든 클러스터 데이터를 저장하는 경량, 분산형 키-값 저장소임
-> 컨트롤러 매니저
: 다양한 컨트롤러를 실행함
-> 스케줄러
: 새로 생성된 파드를 대상 노드에 할당함
2) 워커 노드
: 실제 컴퓨팅 작업을 수행하며, 애플리케이션 컨테이너의 실행을 담당함
: 아래와 같은 주요 구성 요소를 포함함
-> kubelet
: 각 노드에서 실행되는 주요 에이전트로, 마스터 노드의 지시를 받아 컨테이너의 실행 및 관리를 담당함
-> 컨테이너 런타임
: 컨테이너 실행을 위한 환경을 제공함
-> kube-proxy
: 네트워크 프록시로서, 워커 노드의 네트워크 규칙을 관리하고, IP 주소나 포트 번호를 사용하여 클라이언트의 요청을 파드로 전달함
Minikube
Minikube
는 Kubernetes를 로컬 환경에서 단일 노드 클러스터로 실행할 수 있도록 설계된 도구임
특징
: 간편한 설치 및 설정
: 포괄적인 Kubernetes 경험
: 자원 활용의 효율성
: 다양한 드라이버 지원
: 개발 및 테스트 용이성
로컬에서 Minikube
설치 및 설정
# windows 설치
choco install minikube
# macOS 설치
brew install minikube
# Minikube 실행
minikube start
# Minikube 실행 (특정 가상화 드라이버 지정 시)
minikube start --driver=<driver_name>
# Minikube 실행 (CPU 및 메모리 할당량 조정 시)
minikube start --memory 4096 --cpus 2
# Minikube 상태 확인
minikube status
# Minikube 정지
minikube stop
# 클러스터 삭제
minikube delete
kubectl
의 기본 사용법
: kubectl
은 Kubernetes 클러스터와 상호 작용하는 표준 커맨드라인 도구임
: minikube
설치하면 kubectl
도 자동 설치됨
# 클러스터 정보 확인
kubectl version
kuberctl 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
Minikube
모니터링
# Minikube 대시보드를 사용하여 클러스터의 시각적 모니터링 수행
minikube dashboard
cf) 쿠버네티스 모니터링 IDE - Openlens
brew install --cask openlens