TIL

10_1.Kubernetes 개념 및 Minikbue 설치 및 구성

꿀승 2025. 2. 24. 22:36
728x90
반응형
SMALL

학습내용

  1. Kubernetes(k8s)
  2. Kubernetes 아키텍처
  3. MiniKube
  4. 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