[MSA 설계] 10주차-1일차: Kubernetes 개념 및 Minikube 설치 및 구성

limlim·2025년 2월 24일
0

KDT

목록 보기
9/21
post-thumbnail
  1. Kubernetes(k8s)란?
  • 현재 가장 널리 사용되는 오픈 소스 컨테이너 오케스트레이션 플랫폼으로, 크고 복잡한 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 처리함

    cf) k8s (k로 시작하고 s로 끝나는데 사이에 8개의 문자가 있어서)
    그외 비슷한 예로 i18n, a11y, l10n, g11n, m17n 등이 있음

  1. 왜 컨테이너 오케스트레이션이 필요한가?
  • 컨테이너가 많아질수록 관리가 복잡해짐. 여러 개의 컨테이너를 수동으로 관리하는 것은 시간이 많이 걸리며 장애를 일으킬 수 있는 여지가 큼.

  • 컨테이너 오케스트레이션 사용 시 이점
    1) 자동화된 배포
    2) 확장 및 로드 밸런싱
    3) 서비스 디스커버리와 네트워킹
    4) 상태 관리와 지속성
    5) 자원 모니터링과 로깅

  • 대표적인 컨테이너 오케스트레이션 도구
    1) Kubernetes(k8s)
    2) Docker Swarm
    3) Apache Mesos/Marathon

  1. Kubernetes 아키텍처
  • Kubernetes의 주요 구성요소
    : Kubernetes는 컨테이너화된 애플리케이션의 배포, 관리, 확장을 자동화하는 시스템임
    : 이 시스템의 아키텍처는 주로 두 가지 유형의 노드(마스터 노드, 워커 노드)로 구성되어 있음

    1) 마스터 노드
    : 클러스터의 전체적인 관리 및 조정을 담당하며, 클러스터의 상태를 중앙에서 제어함
    : 아래 구성 요소를 포함함
    -> API 서버: 클러스터와의 모든 통신이 이루어지는 허브임
    -> 클러스터 스토어(etcd): 모든 클러스터 데이터를 저장하는 경량, 분산형 키-값 저장소임
    -> 컨트롤러 매니저: 다양한 컨트롤러를 실행함
    -> 스케줄러: 새로 생성된 파드를 대상 노드에 할당함

    2) 워커 노드
    : 실제 컴퓨팅 작업을 수행하며, 애플리케이션 컨테이너의 실행을 담당함
    : 아래와 같은 주요 구성 요소를 포함함
    -> kubelet: 각 노드에서 실행되는 주요 에이전트로, 마스터 노드의 지시를 받아 컨테이너의 실행 및 관리를 담당함
    -> 컨테이너 런타임: 컨테이너 실행을 위한 환경을 제공함
    -> kube-proxy: 네트워크 프록시로서, 워커 노드의 네트워크 규칙을 관리하고, IP 주소나 포트 번호를 사용하여 클라이언트의 요청을 파드로 전달함

  1. Minikube

Minikube는 Kubernetes를 로컬 환경에서 단일 노드 클러스터로 실행할 수 있도록 설계된 도구임

  • 특징
    : 간편한 설치 및 설정
    : 포괄적인 Kubernetes 경험
    : 자원 활용의 효율성
    : 다양한 드라이버 지원
    : 개발 및 테스트 용이성

  • 로컬에서 Minikube 설치 및 설정

    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

profile
不怕慢,只怕站 개발자

0개의 댓글