Search
Duplicate

컨테이너 오케이스트레이션

태그
Kubernetes
날짜
2022/09/11
상태
Done
순서
1
인프런 > 초보를 위한 쿠버네티스 안내서를 통한 정리입니다.

서버를 관리한다는것

1.
문서화
문제점 : 환경설정에 따라 다르게 동작하기 때문에 어려움이 많이 있었다.
2.
서버 관리도구(CHEF, PUPPET, ANSIBLE)
문제점 :
1.
설정관리 도구를 배워야됨
2.
서버가 복잡해지면도구 자체 사용법도 어려워짐
3.
가상머신
문제점 :
1.
특정벤더에 의존적의게 된다.
2.
느리다.
3.
클라우드환경에 맞지 않는다

도커 컨테이너의 등장

대부분의 서버 관리자의 복잡함을 해결해 준다.
컨테이너의 특징
가상머신과 비교하여 컨테이너 생성이 쉽고 효율적
컨테이너 이미지를 이용한 배포와 롤백이 간단
언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리
개발, 테스팅, 운영 환경은 물론 로컬 피시와 클라우드까지 동일한 환경을 구축
특정 클라우드 벤더에 종속적이지 않음
각각의 프로그램들을 컨테이너 별로 사용하고 해당하는 프로그램들을 컨테이너화 하는 것을 Containerization이라고 한다.

컨테이너의 흐름

Build : 도커를 이미지화 한다.
ship: 만든이미지를 도커허브나 저장소에 저장
run : 도커이미지를 실행
그전에는 프로그램이 어떤 언어를 사용하는지에 따라 다르게 했지만, 도커를 사용하면 이미지만 만들기 하면은 저장하고 사용하는 방식 자체가 다 표준화과 된다.

컨테이너의 문제점

모든 프로그램을 컨테이너로 만들게 됨
점점 복잡해지고, 관리하는 포인트들이 많이 생긴다.

컨테이너는 어떻게 배포하면 좋을까?

문제점
1.
배포시에 한개씩 ssh로 접속해서 배포를 진행한다.
2.
여유있는 컨테이너가 어디에 있는지 모니터링 해야된다.
3.
프로그램이 버전업일 때 전부 접속해서 해줘야된다.

서비스 검색은 어떻게 할까?

웹으로 접근하게 되면 로드밸런서를 통해서 여러가지 ip주소로 접근하게 된다.
문제점
1.
최근에는 마이크로소브프 아키텍처 MSA로 많은것들이 API통신을 한다. 이럴때 마다 LoadBalancer에 신규 IP주소를 부여해주고, proxy에도 작성해야 되는 관리포인트가 생기는 것이다.

서비스 이상, 부하 모니터링은 어떻게 할까?

문제점
1.
서버에 문제가 생기면, 서버관리자는 새벽에도 일어나서 조치를 해야된다.
2.
퇴근전에 새벽에 장애가 발생하지 않기를 기도를 한다.
Container 자체 기술은 좋은데, 많이 생성된 컨테이너를 관리하기 위한 기술이 필요하다. 이게 바로 컨테이너 오케스트레이션 이라는 것이다.
Container Orchestration : 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구

컨테이너 오케스트레이션

1.
CLUSTER
기존에는 서버 관리자가 node에 대한 자원을 모두 알고 있어야 됬다.
도커가 많아지면서 node 단위가 아닌 Cluster 단위로 관리를 해줘야된다.
관리자는 마스터 서버에 명령을 하게 되면 Cluster간의 통신으로 명령어를 실행 시키게된다.
때문에 클러스터의 컨터에너들은 서로 잘 연결이 되있어야된다.
2.
STATE(상태관리)
내가 컨테이너의 갯수를 설정해 놓으면 자동으로 컨테이너 갯수를 유지시켜준다.
한개의 컨테이너가 문제로인해 사라지면 자동으로 생성되서 갯수 3개를 맞춰준다.
3.
SCHEDULING(배포관리)
서버를 배포할때, 어떤 서버에 여유가 있는지 서버관리자가 알아야 배포가 진행 된다.
하지만 컨테이너 오퍼레이션을 사용하게되면 위와같이 자동으로 여유공간에 앱을 넣게 된다
여유공간이 없을때는 위와같이 오른쪽에 신규 서버를 만든후 컨테이너를 만들어 준다.
4.
ROLLOUT ROLLBACK(버전관리)
서버 별로 개별로 관리하는게 아니라 하나의 명령어로 관리하는 것
5.
SERVICE DISCOVERY(서비스 등록 및 조회)
도커 웹 서버를 사용하는 프록시 서버가 저장소를 관찰을 하고 바뀔때 마다 설정을 변경하고 프로세스를 재시작 한다.
관리자가 IP설정마다 변경 해 줄 필요 없이 프로그램이 재설정을 해준다.
6.
VOLUME(볼륨)
볼륨 3개에 마운트 해야 될 수도 있다.
첫 번째 서버에서는 NFS를 마운트
두 번째 서버에서는 AWS를 마운트
세 번째 서버에서는 GCE를 마운트
각각의 서버를 직접 연결할 수 있지만 추상적인 설정으로 변경하면 좋다.

왜 쿠버네티스인가?

컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
1.
다양한 요구사항을 만족시킬 수 있는 유연함
2.
어디서나 동작 (오픈소스, 리눅스 기반)
3.
화발한 커뮤티니 활동
4.
많은 인기 운영에서 사용하는 비율이 85%
5.
2019년 카카오,라인 적용(국내기업에서도 사용중)
6.
무한한 확장성(KUBEFLOW TEKTON, 서비스메시, 서버리스)
7.
사실상의 표준이 되었다.
8.
도커에서도 쿠버네티스를 지원하기 시작함
9.
Amozon, Azoure, Google도 쿠버네티스를 사용하기 시작함.
10.
인프라를 돌리기위한 라이브러리 구성이 잘 되어있다.