Infra/Kubernetes
Container Orchestration
호나우지규
2021. 9. 24. 09:42
서버를 관리한다는 것 -> 서버의 상태를 관리하기 위한 노력
서버 관리 방법
- 문서화 - OS 가 바뀌는 등 문서화를 해도 한계점이 있음
- chef, puppet, ansible 등 도구를 사용 - 설정을 관리하는 것은 좋으나 설치된것이랑 달라 충돌 날 수 도 있음 + 난이도 높음
- VM (가상머신) - 느리지만 관리가 직관적이지 않지만 좋긴 좋음. 그라나 요새 클라우드가 대세인데 클라우드에 알맞지 않음
- docker 모든 실행환경을 컨테이너로 함. 어디서든 동작하고 쉽고 효율적임.
컨테이너의 특징
- 가상머신과 비교하여 컨테이너 생성이 쉽고 효율작
- 컨테이너 이미지를 이용한 배포와 롤백이 매우 간단
- 언어나 프레임워크에 상관없이 어플리케이션을 동일한 바식으로 관리
- 개발, 테스팅, 운영 환경은 물론 로컬 PC와 클라우드까지 동일한 환경을 구축
- 오픈소스라서 특정 클라우드 벤더에 종속적이지 않음
ex) mysql, redis, rabbitMq, jenins, wordpress 등 다 containerization
결국 도커라는 기술은 좋긴한데 수백개 수천개 관리할땐 힘듦
ex) ssh 통해 하나하나 씩 서버를 접속해서 관리하기 귀찮다는 뜻
Developer (코드작성) -> 빌드 -> ship -> docker(run)
Proxy -> Web server
웹서버가 부하되면 하나가 더생김
Proxy가 새로운 웹서버를 바라보지 않으면 안됨
그래서 Load balancer를 이용하면 됨
Proxy -> Load balancer -> Web server 1 / Web server2
결국 컨테이너를 다 관리하기 위해서 컨테이너 오케스트레이션이 생김.
복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구 - Container Orchestration
특징
- 클러스터
노드를 하나하나 관리하는 것이 아닌 클러스터 단위로 관리
마스터 서버를 하나를 두고 마스터가 노드에게 명령을 내림 - 상태관리
replicas 가 예를들어 3개 이면 1개가 알 수 없는 오류로 죽었을때, 4개째가 생성됨 - 배포 관리 (스케줄링)
- 배포 버전 관리
- 서비스 등록 및 조회 (service discovery)
- 볼륨 스토리지