Remark
본 글은 초보를 위한 쿠버네티스 안내서의 내용을 정리한 글입니다.
1. 쿠버네티스 시작하기
1.1 서버 관리를 잘하는 것이란?
- 서버의 상태를 관리
- CHECK, puppet labs, ANSIBLE: 코드로 서버 설정 관리 도구
서버 설정이 복잡해질수록 난이도가 높아져 관리하기 어려움 - 가상머신
조금 느리긴하지만 관리가 쉬우나 클라우드 환경에 적합하지 않음 - Docker
모든 실행환경을 container로. 어디서든 동작하고 쉽고 효율적
그러나 [Develop -> Build -> Ship -> Run] 과정이 반복되어 수많은 App들을 관리하기 어려움
1.2 도커 그 이후
- Container 배포(deployment)는 어떻게 할까?
각각의 container를 따로따로 관리하는 것이 어려움 - 서비스 검색(service discovery)는 어떻게 할까?
여러 개의 web server를 띄울 경우, proxy server가 web을 가리키는 대신 각 web server에 부하를 조절해주는 LoadBalancer를 가리키게 하면 어느정도 처리가능하나 여전히 많은 web server에 대하여 불편한 부분이 존재 - 서비스(gateway) 노출은 어떻게 할까?
- 서비스 이상, 부하 모니터링은 어떻게 할까?
Container 중 일부에 문제가 생길 경우 확인할 수 있는 모니터링이 필요
따라서, 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구가 필요
→ Container Orchestration
1.3 컨테이너 오케스트레이션
- Container(node)들을 cluster로 관리
- 중앙제어(master-node): master-node에만 명령을 내리면 master-node가 cluster에 명령을 하달
- 네트워킹: cluster 내부의 node들은 네트워크 통신이 원활히 되어야 함
- 노드 스케일: cluster를 이루는 node의 개수가 많아도 잘 동작해야 함
- State: 상태 관리
- Scheduling: 배포 관리
각 server의 resource를 모니터링하고 가장 적절한 server에 app을 배포 - Rollout, rollback: 배포 버전관리
Cluster 단위로 버전을 관리 - Service discovery
- Volume: 볼륨 스토리지
→ Docker swarm, Kubernetes 등의 컨테이너 관리도구가 존재
2. 왜 쿠버네티스인가?
2.1 쿠버네티스 소개
컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
- 오픈소스
- 엄청난 인기 (운영의 84%가 k8s를 사용)
- 무한한 확장성
- 사실상의 표준
2.2 쿠버네티스 아키텍쳐
3. 도커 실습
4. 쿠버네티스 실습
PREVIOUSEtc