본문 바로가기

TOPIC

쿠버네티스 : 서버를 관리한다는 것

반응형

서버를 관리한다는 것..

서버를 관리한다는 것은 무척 어렵다. 처음에는 다른 사람도 서버를 실행하기 위해서 문서화를 잘해서 잘 따라하도록 했지만 이것도 힘들어지고 이후에는 CHEF, puppet, ANSISBLE 같은 서버 관리 코드가 생기게 된다.

 

하지만 이러한 서버 관리코드도 배워야하고 여전히 문제가 많이 남는다. 그래서 나타난게 가상머신이다.

가상머신을 띄우고 프로그램을 실행하면 문제없이 되고 필요하면 가상머신 자체를 저장해서 다른 서버에 띄운다면 문제가 없게된다. 

 

하지만 이러한 가상머신은 특정 벤더에 속하게되고 클라우드 환경과 잘 안맞는것도 문제가 생기게 된다.

이때 Docker가 등장하게된다.

 

https://www.youtube.com/watch?v=wW9CAH9nSLs&t=4s 

도커의 최초등장

도커가 있으면 어디서나 쓸 수있고 컨테이너라는 방식을 사용해서 빠르기 까지하다. 보통 기능이 좋으면 다른게 문제가 있길 마련이다 아직까지는 도커가 서버 개발자의 어려움들을 대부분 해결해준다.

 

컨테이너의 특징

- 가상머신과 비교하여 컨테이너 생성이 쉽고 효율적이다

- 컨테이너 이미지를 이용한 배포와 롤백이 간단하다.

- 언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리한다.

- 개발,테스팅,운영 환경은 물론 로컬 피시와 클라우드까지 동일한 환경을 구축해준다.

- 특정 클라우드 벤더에 종속적이지 않다.

 

그래서 모든것을 컨테이너로 쓰게된다.

 

하지만 서비스가 커지고 컨테이너가 많아지면은 관리해야하는 도커의 수는 점점 많아지게 된다.

아... 컨테이너의 배포는 어떻게하는 것일가 좋을까??

 

Docker 서버가 3개있다면 배포하기위해서 ssh를 사용해 3번의 걸쳐 접속하고 Docker stop app 블라블라...

또한 v1의 배포를 3개에 배포했다. 그 후 문제점이 발생하게 되어 V2로 버전 업하게되고 3개를 다시 도커 이미지를 받아서 업데이트하게된다. 하지만 서버가 30개라면 ?? 300개라면?? 상상하기도 싫은 일이 생기게 된다.

 

이 외에도 하나의 프록시 서버에서 여러 도커웹서버로 설정되어있다. 하지만 웹서버의 부하가 많아져서 다른 서버를 쓴다고 한다면 로드밸런스를 쓰고 부하 분산을 하게되는데 이것도 개발자가???? 

 

이렇게 할수도없고 ㅎㅎㅎㅎ.............

 

 

요즘은 마이크로 서비스가 유행해서 서비스와 통신할때도 요러 중노동이 생기게된다.

(서비스의 장애, 서비스가 죽는 경우, 서비스의 하나하나의 상태...)

 

완전 중노동이다.. 어떤 서버가 부하가 적은지 이런것을 관리해줄 녀석이 필요하다.

 

 

Container Orchestration의 등장

- 클러스터 : 노드를 하나하나 보고 관리하는것이 아니라 하나의 덩어리처럼 관리한다. (MASTER 서버에다가 명령어를 보내고 관리하는 식, 클러스터들 끼리는 서버들 끼리 네트워크 통신을 한다.)

- STATE : 상태관리라고하는데 내가 설정한 서버 개수를 유지해준다.. 죽으면 추가해주고

- SCHEDULING : 배포관리라고한다. 앱을 띄울 수 잇는 서버를 자동으로 체크해서 할당해준다. (스케줄링 기능)

- ROLLOUT, ROLLBACK : V1 -> V2 , V2 ->V1 을 관리해준다.

- SERVICE DISCOVERY : 서버가 뜨면 프록시서버가 등록된 서버를 관리한다.

- VOLUME : 노드마다 볼륨 스토리지를 연결해야 할 경우 , 추상적으로 설정으로 관리가 가능하다.

 

처음에는 정말 많은 DEIS, RANCHER, SWARM(도커에서만듬) 여러기능들이 나왔다...

여러 개 중에 뭐가 인기가 많아질까.... 하다가 결국 승자는 쿠버네티스가 표준처럼 등장하게된다.

 

 

왜 쿠버네티스가 선택 받았을까?

 

일단 구글에서 만들었다. 1주일에 20억개의 컨테이너를 생성하는 google이 컨테이너 배포 시스템으로 사용하던 borg를 기반으로 만든 오픈소스이다. 

 

여러 특징들이 있는데...

 

Planet Scale : 행성스케일..?

Never Outgrow : 유연함

Run Anywhere : 어디서든 동작가능!

 

일단 오픈소스이기도하고.. 커뮤니티도 150개가 넘는다. 참가한 기업도 구글, 인텔 등등 굴지의 기업들이 참여했다.

 

이런 인기있는 이유는 무한한 확장성이 있다. 쿠버네티스가 플랫폼이긴 하지만 그 위에 새로운 플랫폼들과 연동이 가능하다. 사실상 표준... De facto

 

쿠버네티스가 인기가 많아지다보니 도커도 지원하게 되었다. 유명한 클라우드들도 쿠버네티스를 지원한다.

 

 

이러다보니 쿠버네티스는 서버개발자라면 꼭 사용해야한다.

 

 

반응형