환경 설정
- 실습을 위해 LabsPlay 사이트(play-with-k8s.com)를 활용한 온라인 테스트 환경 사용
- 로그인 후 'Add new instance' 버튼을 통해 노드 생성 가능
- 환경 설정을 위한 bootstrap 명령어 실행 필요 (경고 메시지에서 제공하는 두 개의 명령어)
- 접속 시간은 4시간으로 제한됨
Kubernetes 아키텍처
- Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장, 운영을 자동화하는 오픈소스 시스템
- 마스터 컴포넌트와 노드 컴포넌트로 구성
- 마스터 컴포넌트: API 서버, 스케줄러, 컨트롤러 매니저 등 포함
- 노드 컴포넌트: kube-proxy, 컨테이너 런타임 등 포함
Kubernetes 주요 구성요소
- Pod: Kubernetes의 가장 작은 배포 단위
- 하나 이상의 컨테이너를 포함 가능
- 컨테이너들은 스토리지와 네트워크를 공유
- 일시적 성격을 가지며 불변적이지 않음
- Service: Pod 집합에 안정적인 네트워크 주소 제공
- 파드 집합에 지속적인 접근을 위한 IP 주소와 포트 할당
- 로드 밸런싱 기능 제공
- 서비스 발견 및 타입 설정 지원
- Deployment: Pod와 ReplicaSet을 선언적으로 관리
- 애플리케이션 배포, 업데이트, 스케일링 자동화
- 자동화된 롤아웃, 롤백 기능 제공
- YAML 파일이나 JSON 형식을 사용한 선언적 업데이트 지원
- ReplicaSet: Pod 복제본 유지 관리
- 지정된 수의 Pod가 항상 실행되도록 보장
- 실패한 Pod 자동 대체 (자체 치유 기능)
- 가용성 보장, 부하 분산 지원
- Namespace: (강의에서 간략하게만 언급됨)
실습 내용
- Pod 실습: Nginx 웹서버 실행
kubectl run fastcampus-server --image=nginx:latest --port=80 명령어로 Pod 생성
kubectl get pods로 Pod 상태 확인
kubectl describe pod [pod-name]으로 Pod 세부 정보 확인
- Deployment 실습: 여러 복제본 관리
kubectl create deployment fastcampus --image=nginx --replicas=2 명령어로 Deployment 생성
kubectl get deployments로 Deployment 상태 확인
kubectl edit deployments fastcampus로 Deployment 설정 수정 (replicas 수 변경)
- 복제본 수 증가 시 자동으로 새 Pod 생성 확인
MLOps 관점에서의 중요성
- Kubernetes의 오케스트레이션 기능은 MLOps에서 고가용성 보장에 중요
- 컨테이너 관리와 스케일링 자동화를 통해 ML 애플리케이션의 안정적 운영 지원
- 실패한 시스템 자동 복구 및 로드 밸런싱 제공
