강의 목표 설명
- 목표: 쿠버네티스의 기본 개념을 이해하고, 간단한 애플리케이션을 배포하고 관리하는 방법을 실습합니다.
- 내용: 쿠버네티스의 기본 아키텍처, 파드(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 <파드명>
- 파드의 상세 정보를 출력합니다.
- 파드 생성: kubectl run nginx --image=nginx
디플로이먼트와 서비스 생성 실습 (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 페이지가 뜨는지 확인합니다.
- 디플로이먼트 생성: kubectl create deployment nginx --image=nginx
스케일링 실습 (5분)
- 목표: 애플리케이션의 스케일링을 이해하고, 파드의 수를 조정하는 방법을 실습합니다.
- 실습 내용:
- 디플로이먼트 스케일링: kubectl scale deployment nginx --replicas=3
- Nginx 디플로이먼트의 파드 수를 3개로 늘립니다.
- 파드 수 확인: kubectl get pods
- 파드가 3개로 늘어난 것을 확인할 수 있습니다.
- 디플로이먼트 스케일링: kubectl scale deployment nginx --replicas=3
4. 정리 및 Q&A (5분)
핵심 개념 요약
- 쿠버네티스 클러스터는 마스터 노드와 워커 노드로 구성됩니다.
- 파드는 쿠버네티스의 가장 작은 배포 단위이며, 디플로이먼트와 서비스를 통해 관리되고 외부에 노출될 수 있습니다.
- 쿠버네티스를 통해 애플리케이션을 쉽게 스케일링하고
업데이트할 수 있습니다.
질의응답 (Q&A)
- 학습자들이 강의 중 이해되지 않은 부분이나 추가적으로 궁금한 사항을 질문할 수 있도록 시간을 제공합니다.
- 예를 들어, "파드가 정확히 어떤 상황에서 사용되는지?", "서비스의 NodePort와 LoadBalancer의 차이는 무엇인지?"와 같은 질문을 유도할 수 있습니다.
- 쿠버네티스 정의, 쿠버네티스 동작 원리&아키텍처
- Pod, Deployment, namespace, 워커노드, 마스터 Pod 동작 flow
- 쿠버네티스 주요 명령어
- node 보여주기
- Pod 생성, 삭제
- Deployment 생성, 삭제
- namespace 생성, 삭제
- 실습 (5분)