Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
컨테이너 오케스트레이션
컨테이너 오케스트레이션
도커의 등장
컨테이너 특징
- 가상머신과 비교하여 컨테이너 생성이 쉽고 효율적
- 컨테이너 이미지를 이용한 배포와 롤백
- 언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리
- 개발, 테스팅, 운영환경, 로컬 피시와 클라우드까지 동일한 환경을 구축
- 특정 클라우드 벤더에 종속적이지 않음
과정
코드작성 - 이미지 빌드 - 이미저 저장 - 컨테이너로 실행
- 이렇게 컨테이너가 너무 많아지는 경우가 있음 → 손이 너무 많이 가는 경우 발생
도커 그 이후
- 도커 컨테이너를 하나하나 생성하고 중지하고 실행해야 함
- 어떤 서버에 여유가 있는지 알 수 없음
- 롤 아웃/롤 백이 어려워짐
- 로드 밸런서를 통해 컨테이너와 프록시 연결 → IP 주소가 바뀔 때마다 다시 연결해 주줘야 함
- 내부에 있는 서비스를 외부로 노출하는 방법: public 영역에 proxy 서버를 두고 다른 컨테이너들과 연결하도록 만듦
- 내부 설정을 바꿀 때마다 코드를 추가해 주어야 한다.
- 서비스 이상, 부하 모니터링이 필요해짐
→ 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구 등장
컨테이너 오케스트레이션
특징
- Cluster: 노드를 하나하나 관리하지 않고 클러스터 단위로 추상화하여 관리
- 관리자가 명령어를 입력하면 master 서버가 알아서 노드에 명령을 보내도록 함
- cluster 내의 노드 간 통신이 잘 되도록 설정해야 한다.
- Status: 상태 관리
- 예를 들어 A 컨테이너가 3개가 되도록 설정
- 3개인 A 컨테이너에서 하나 오류 발생
- 오류가 발생한 컨테이너를 죽이고 새로운 컨테이너 생성
- Scheduling: 배포 관리
- 어떤 서버가 여유 있고 공간이 존재하는 지 자동으로 확인
- 공간이 없는 경우 새로운 서버를 생성해 컨테이너를 띄우도록 함
-
Rollout/ Rollback: 배포 버전관리
- Service Recovery: 서비스 등록 및 조회
- 새로운 web이 뜸 → 중앙 서버에서 새로운 web 등록
- 등록 이후 Proxy 설정 변경 후 프로세스 재시작
- Volume: 볼륨 스토리지
- 각 노드에 필요한 스토리지 존재
- 이를 설정으로 관리함
쿠버네티스
컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
왜 인기일까??
- 오픈 소스로 운영
- 커뮤니티의 발달
- 확장성
- 사실상 표준
- CNCF - 클라우드 환경에 적합한 컴퓨팅 기술을 지원하는 단체
- Cloud Native의 핵심 역할