인프런 '초보를 위한 쿠버네티스 안내서' 강의를 들으며 정리한 내용입니다.
도커의 등장으로 모든 실행환경을 컨테이너로 바꾸게 되었고,
도커만 설치되어 있다면 어디서든 동작하여 서버 관리자의 복잡성을 해결해줌.
컨테이너의 특징
- 가상머신과 비교하여 컨테이너 생성이 쉽고 효율적
- 컨테이너 이미지를 이용한 배포와 롤백이 간단
- 언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리
- 개발, 테스팅, 운영 환경은 물론 로컬 피시와 클라우드까지 동일한 환경을 구축
- 오픈소스이며 특정 클라우드 벤더에 종속적이지 않음
mysql, redis, jenkins 등을 컨테이너화 하여 사용.
Developer -> Build -> Ship -> Run
개발자가 코드를 작성하고,
도커 이미지를 만들고(Build),
도커 허브나 저장소에 저장하고(Ship),
도커 이미지를 컨테이너로 실행(Run)하는 것으로 방법이 정형화됨.
But,
도커로 인해 서버 관리가 좀 편해졌으나
컨테이너가 너무 많아지면, 그 많은 컨테이너를 관리하는데 어려움이 있음.
1. Deployment 배포는 어떻게 할까?
중앙에서 모든 컨테이너의 롤백을 관리하고 싶음
2. Service Discovery 서비스 검색은 어떻게 할까?
프록시 -> 로드밸런서 -> 웹 컨테이너
IP가 바뀌면 업데이트 해주고,,,
3. Gateway 서비스 노출은 어떻게 할까?
4. 서비스 이상, 부하 모니터링은 어떻게 할까?
=> 이러한 문제 해결을 위한 기술이.. Container Orchestration
[Container Orchestration :: 컨테이너 오케스트레이션]
복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구
서버 관리자가 하는 일을 대신해주는 프로그램
컨테이너 오케스트레이션 특징
1. CLUSTER
- 중앙제어 (master-node)
노드를 하나하나 관리하는게 아닌 클러스터 단위로 추상화 하여 관리 함.
클러스터 위에 마스터 서버를 두고 관리자는 마스터 서버에 명령어를 던지면 마스터 서버가 노드에 명령어를 보냄
- 네트워킹
클러스터 내 노드들끼리 네트워크 통신이 원활해야 함. 네트워크 연결을 잘 해둬야 함.
- 노드 스케일
노드가 수천개가 되더라도 감당할 수 있게 설계 시 고려해야 함. 아닐경우 부하 감당하지 못하게 됨.
2. STATE
- 상태 관리
replicas 숫자를 2 -> 3으로 바꾸면 컨테이너 오케스트레이션에서 컨테이너를 3개 띄워줌.
만약, 컨테이너 하나가 문제가 있을 경우 컨테이너를 죽이고, 다른 컨테이너 하나를 띄워 3개를 맞춰줌.
3. SCHEDULING
- 배포 관리
특정 앱을 실행시킬 때, 여유가 있는 서버에 올려주고
만약 여유가 있는 서버가 없다면, 서버를 하나 더 띄워주고 그 서버에 올려주는 작업을 스케쥴링 할 수 있어야 함.
4. ROLLOUT / ROLLBACK
- 배포 버전관리
version1이 떠있는데, version2를 띄우면 version2로 올라가고 (ROLLOUT)
version2가 떠있는데, version2가 문제가 있으면 version1으로 롤백하는 버전 관리(ROLLBACK)
5. SERVICE DISCOVERY
- 서비스 등록 및 조회
서비스가 실행되면 서비스 정보를 저장소에 등록해주고
그 저장소를 프록시 서버가 관찰하고 있다가 저장소가 바뀌면 설정을 변경하고, 프로세스를 재시작 함
6. VOLUME
- 볼륨 스토리지
1번 서버에서는 AWS를 마운트하고 2번 서버에서는 네트워크 파일 시스템을 마운트 하는 등 스토리지 연결을 해야 할 때 추상적으로 설정으로 관리할 수 있음
컨테이너 오케스트레이션(개념)을 구현한 도구
- DEIS 데이즈
- RANCHER 랜처
- MESOS 메소스
- Nomad 노마드
- Docker SWARM 도커스웜 : 도커처럼 사용하기 쉬운 컨테이너 오케스트레이션!
...
이 중, 쿠버네티스가 표준처럼 등장 함.
Kubernetes
: 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
쿠버네티스는 구글에서 만든 오픈소스로 2015년 처음 1.0 버전이 릴리즈 됨.
운영에서 사용가능한 컨테이너 오케스트레이션.
다양한 요구사항을 만족시킬 수 있는 유연함.
Run Anywhere 어디서나 동작함
전세계 클라우드 3대장도 모두 쿠버네티스를 매니지드 서비스로 제공
- EKS / Amazon / Elastic Kubernetes Service
- AKS / Azure / Kubernetes Service
- GKE / Google / Kubernetes Engine
개발/빌드/배포 과정
'초보를 위한 쿠버네티스 안내서' 학습 범위
1. 도커 컨테이너 실행하기
- 도커와 도커 컴포즈를 이용한 멀티 컨테이너 관리
2. 쿠버네티스에 컨테이너 배포하기
- 실습(hands-on) 환경 만들기
- kubectl 사용법
- pod, deployment, service 등
- 기본 리소스 학습
3. 외부 접속 설정하기
- Cluster IP, NodePort, LoadBalancer, Ingress 서비스 타입 학습
- 서비스 디스커버리 학습
4. 스케일 아웃하기
- 부하에 따른 컨테이너 개수 조정
- 최소 리소스 요청 설정
- 오토스케일링
5. 그외 고급기능 소개
- HELM 패키지 매니저 소개
- GitOps, ServiceMesh 소개
'STUDY > 쿠버네티스' 카테고리의 다른 글
[초보를 위한 쿠버네티스 안내서] 쿠버네티스 이론 (1) | 2022.09.19 |
---|