본문 바로가기

쿠버네티스

[쿠버네티스] 사내 세미나 준비 (따배쿠 참조)

강의 목표 설명

  • 목표: 쿠버네티스의 기본 개념을 이해하고, 간단한 애플리케이션을 배포하고 관리하는 방법을 실습합니다.
  • 내용: 쿠버네티스의 기본 아키텍처, 파드(Pod), 디플로이먼트(Deployment), 서비스(Service)에 대해 배울 것입니다.
  • 실습: Nginx 웹 서버를 쿠버네티스 클러스터에 배포하고, 이를 서비스로 노출하는 방법을 실습합니다.

쿠버네티스의 필요성

  • 컨테이너 오케스트레이션의 필요성: 현대 애플리케이션은 마이크로서비스로 구성되는 경우가 많습니다. 이러한 마이크로서비스를 컨테이너로 배포하고 관리하는 작업은 복잡해집니다.
  • 쿠버네티스의 역할: 쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하여 이러한 복잡성을 해결합니다.

2. 기본 개념 (20분)

쿠버네티스 아키텍처 개요 (5분)

  • 클러스터: 여러 대의 노드(서버)로 구성되며, 마스터 노드와 워커 노드로 나뉩니다.
  • 마스터 노드: 클러스터를 관리하는 주요 컴포넌트가 위치합니다. API 서버, 스케줄러, 컨트롤러 매니저 등이 있습니다.
  • 워커 노드: 애플리케이션 컨테이너가 실행되는 노드입니다. Kubelet, 컨테이너 런타임, Kube-Proxy 등이 실행됩니다.

파드(Pod) 개념 (5분)

  • 파드란? 쿠버네티스에서 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함합니다.
  • 공유 리소스: 파드는 네트워크와 스토리지 리소스를 공유합니다.
  • 애플리케이션의 논리적 호스트: 파드는 논리적으로 하나의 애플리케이션 인스턴스를 나타내며, 보통 하나의 컨테이너를 포함하지만, 협력하는 다수의 컨테이너도 포함할 수 있습니다.

디플로이먼트(Deployment)와 서비스(Service) (10분)

  • 디플로이먼트란?
    • 애플리케이션을 관리하는 쿠버네티스 객체로, 파드를 자동으로 생성하고, 원하는 상태를 유지하도록 합니다.
    • 롤링 업데이트와 같은 기능을 제공하여, 애플리케이션의 버전 관리를 쉽게 할 수 있습니다.
  • 서비스란?
    • 파드 간의 네트워크 통신을 안정적으로 제공하기 위한 쿠버네티스 객체입니다.
    • 특정 파드 집합을 추적하고, 이를 클러스터 내 또는 외부에 노출하는 방법을 정의합니다.
    • 타입: ClusterIP (기본값), NodePort, LoadBalancer 등이 있습니다.

3. 기본 실습 (30분)

파드 배포 실습 (10분)

  • 목표: Nginx 웹 서버를 쿠버네티스 클러스터에 배포하고, kubectl 명령어로 파드를 확인합니다.
  • 실습 내용:
    • 파드 생성: kubectl run nginx --image=nginx
      • 이 명령어는 Nginx 이미지를 기반으로 파드를 생성합니다.
    • 파드 확인: kubectl get pods
      • 생성된 파드의 상태를 확인할 수 있습니다.
    • 파드 상세 정보 확인: kubectl describe pod <파드명>
      • 파드의 상세 정보를 출력합니다.

디플로이먼트와 서비스 생성 실습 (15분)

  • 목표: 디플로이먼트를 통해 Nginx를 배포하고, 이를 외부에 노출하는 서비스를 설정합니다.
  • 실습 내용:
    • 디플로이먼트 생성: kubectl create deployment nginx --image=nginx
      • 이 명령어는 Nginx 애플리케이션을 관리할 디플로이먼트를 생성합니다.
    • 디플로이먼트 확인: kubectl get deployments
      • 생성된 디플로이먼트의 상태를 확인할 수 있습니다.
    • 서비스 생성: kubectl expose deployment nginx --port=80 --type=NodePort
      • 이 명령어는 Nginx 디플로이먼트를 외부에서 접근할 수 있도록 서비스로 노출합니다.
    • 서비스 확인: kubectl get services
      • 생성된 서비스의 상태와 노출된 포트를 확인할 수 있습니다.
    • Nginx 접근: 브라우저나 curl을 사용해 <Node IP>:<NodePort>로 접근하여 Nginx 페이지가 뜨는지 확인합니다.

스케일링 실습 (5분)

  • 목표: 애플리케이션의 스케일링을 이해하고, 파드의 수를 조정하는 방법을 실습합니다.
  • 실습 내용:
    • 디플로이먼트 스케일링: kubectl scale deployment nginx --replicas=3
      • Nginx 디플로이먼트의 파드 수를 3개로 늘립니다.
    • 파드 수 확인: kubectl get pods
      • 파드가 3개로 늘어난 것을 확인할 수 있습니다.

4. 정리 및 Q&A (5분)

핵심 개념 요약

  • 쿠버네티스 클러스터는 마스터 노드와 워커 노드로 구성됩니다.
  • 파드는 쿠버네티스의 가장 작은 배포 단위이며, 디플로이먼트와 서비스를 통해 관리되고 외부에 노출될 수 있습니다.
  • 쿠버네티스를 통해 애플리케이션을 쉽게 스케일링하고

업데이트할 수 있습니다.

질의응답 (Q&A)

  • 학습자들이 강의 중 이해되지 않은 부분이나 추가적으로 궁금한 사항을 질문할 수 있도록 시간을 제공합니다.
  • 예를 들어, "파드가 정확히 어떤 상황에서 사용되는지?", "서비스의 NodePort와 LoadBalancer의 차이는 무엇인지?"와 같은 질문을 유도할 수 있습니다.
  1. 쿠버네티스 정의, 쿠버네티스 동작 원리&아키텍처
  2. Pod, Deployment, namespace, 워커노드, 마스터 Pod 동작 flow
  3. 쿠버네티스 주요 명령어
    1. node 보여주기
    2. Pod 생성, 삭제
    3. Deployment 생성, 삭제
    4. namespace 생성, 삭제
  4. 실습 (5분)