색션 11. Kubernetes 시작하기

모듈 소개

  • 도커 컨테이너 배포 섹션에서 도커 컨테이너를 배포하는 방법은 배웠음
  • 쿠버네티스란 실제로는 도구라기 보단 프레임워크, 개념 모음, 표준 이라고 할 수 있다.

모듈 컨텐츠

  • 컨테이너 배포를 할 때 생기는 문제 이해하기
  • 쿠버네티스가 무엇이며 왜 써야 하는가?
  • 쿠버네티스의 개념과 컴포넌트들

수동 배포의 더 많은 문제점들

  • 쿠버네티스 공식 사이트를 찾아보면 쿠버네티스에 대하여 “Kuberneetes is an open-source system for automating deployment, scaling, and management of containerized applications” 라고 부른다. 이를 통해 알 수 있는 것은 쿠버네티스가 단일 소프트웨어가 아닌 시스템이란 점이다.
  • 컨테이너 배포에 도움이 되는 일체를 갖고 있다는 것을 알 수 있다.

우리는 아마도 문제 상황에 직면하게 된다.

  • 컨테이너를 수동으로 배포하는 것에 대해 생각해보자.
  • 수동 배포를 한다는 것은 몇 가지 문제에 직면하게 된다.
    • 컨테이너가 충돌이 발생하거나 하면, 직접 수동으로 컨테이너를 교체해야 한다. 그리고 이를 위해선 충돌 상황에 대해 직접 모니터링이 필요하다. -> 거대한 어플리케이션일 땐 더더욱 하기 싫은 작업이 될 것이다.
    • 트래픽 급증 시 더 많은 작업 부하에 대응이 필요하다. 컨테이너 수를 늘려 분산 대응을 하도록 해야 하고 또 트래픽이 줄면 다시 컨테이너를 줄여야 한다.
    • 만약 여러 요청이 들어온다면, 켜져있는 여러 컨테이너에 작업을 균등하게 배분해주는 작업도 필요하다.

-> 결국 이러한 상황들에서 수동으로 컨테이너 관리를 한다는건? 결코 좋은 선택이 아닌 것임.


왜 Kubernetes 인가?

AWS ECS 같은 서비스는 돕긴 함 ㅎ

  • 사실 AWS든 nhnCloud 든 웹 프로바이저 업체들은 위에서 지적된 문제들을 인지하고 이에 대해 돕는 기능이 있음
    • 컨테이너 에러 발생 -> 이를 인지하고 재시작하는 기능 포함함(ECS 사용 시)
    • AWS 오토 스케일링 기능은 트래픽에 따라 대응하여 인스턴스를 늘리거나 함
    • 로드 벨런싱 기능을 활용하여 들어오는 트래픽의 분산처리에 도움을 줌
  • 이러한 점들 때문에 단순히 수동으로 배포하고 끝이 아니라, 관리형 서비스를 aws 와 같은 곳에서 제공 받아서 사용해야할 이유가 됨.

하지만 거기에 빠져 버린다(But That Locks Us In!)

  • 특정 클라우드 프로바이더들에게 고정되어 서비스가 제한되게 된다. (실제로 nhn cloud 를 쓸 경우에도 그렇게 되고 나면 벗어나기 어려운 상황이 펼쳐지게 된다.)
  • 특히 설정을 위한 서비스 설정 파일 등은 AWS, AWS ECS에 특화된 형태이고, 이는 서비스에 대해 배워야 하는 문제가 생기고, 따라서 옮기려고 한다면? 이는 굉장히 어렵게 됨. 다른 프로바이더로 넘어가려면 이에 맞춘 설정을 다시 또 해야할 것이다.

-> 그리고 이런 상황이기 때문에, Kubernetes를 사용하는 것이 특정 서비스에 락인 되는 것을 막을 수 있다.