Kubernetes에 대해서

최현섭
None
Published in
5 min readAug 9, 2018

안녕하세요. Humanscape Software Engineer David 입니다.

Kubernetes 도입을 앞두고 공부한 내용을 다음과 같은 순서로 블로깅해보려합니다.

  1. Kubernetes에 대해서
  2. Kubernetes 도입 전 Minikube 사용기
  3. Kubernetes Production 레벨의 환경 구축

Kubernetes 란?

구글에서 오픈소스로 내놓은 컨테이너 오케스트레이션 툴입니다. 오케스트라에서의 지휘자가 여러 단원들을 조율하고 지휘하는 것 처럼 관리자가 여러 컨테이너들을 운영, 배포, 확장하는 것을 쉽게 해주는 솔루션입니다. 다른 오케스트레이션 툴과 마찬가지로 여러 도커 호스트를 하나의 리소스 풀로 사용할 수 있게 클러스터를 구성합니다.

다른 오케스트레이션 툴?

Docker Swarm, Hashicorp Nomad, Mesosphere MarathonAmazon ECS, Amazon EKS 등이 있습니다. Swarm, Nomad, Marathon, Kubernetes 모두 오픈소스 프로젝트로 깃 스타만 봐도 현재 Swarm(5,220), Nomad(3,749), Marathon(3,700), Kubernetes(39,668)로 Kubernetes의 인기를 실감 할 수 있습니다. 물론 이것만으로 판단할 수는 없지만 앞서 언급한 Amazon EKS가 아마존에서 제공하는 관리형 Kubernetes 서비스인 점 등을 보면 분명 Kubernetes는 사실상 오케스트레이션 툴의 표준으로 자리잡았다고 해도 과언이 아닐 것 같습니다.

그럼 Kubernetes는 어떤 특징을 가지고 있을까요?

Automatic binpacking

Binpacking problem 이란 n개의 아이템을 m개의 빈에 채워넣는 문제로, 정해진 공간에서 효율적으로 리소스를 사용하는 것을 의미합니다. 쉽게 이삿짐을 쌓을 때 한 트럭에 최대한 많은 짐을 넣기 위해 테트리스 하는 모습을 생각하시면 됩니다.

Kubernetes는 컨테이너를 서버 리소스에 맞게 가장 효율적으로 자동 배치해줍니다.

Self-healing

Kubernetes는 컨테이너가 반드시 죽는다고 가정하고 있기 때문에 항상 health-check를 하며 장애에 대비합니다. Node가 어떠한 장애로 죽거나 반응이 없는 경우, health-check에 실패한 경우 해당 컨테이너를 자동으로 복구해줍니다.

Horizontal scaling

간단한 명령으로 서비스를 scale up, down 할 수 있습니다. 이를 CPU 사용량에 맞게 자동으로 구현할 수도 있습니다.

Service discovery and load balancing

Kubernetes는 컨테이너에 고유 IP와 단일 DNS를 부여하고 이를 통해 로드밸런싱 할 수 있습니다. 클러스터내의 각 호스트에서 프록시하므로써 이 프록시가 로드밸런서 역할을 수행하는 Server-side service discovery pattern(ex. Amazon ELB)이 구현됩니다.

Automated rollouts and rollbacks

Kubernetes는 응용 프로그램 상태를 모니터링 하면서 동시에 모든 인스턴스를 종료하지 않도록 응용 프로그램이나 해당 구성의 변경 사항을 점진적으로 배치합니다. 또한 잘못된 배치의 경우 자동으로 롤백을 수행할 수 있습니다.

Secret and configuration management

Secret, ConfigMaps Object의 제공으로 Secret key, Configuation을 이미지의 변경없이 키/설정을 업데이트할 수 있고, 이를 외부에 노출하지 않고 관리/사용할 수 있습니다.

Secret은 데이터를 binary 형태로, ConfigMap은 text 형태로 저장합니다.

Storage orchestration

그림과 같이 local storage 시스템을 자동으로 mount 할 수 있습니다.

Public cloud provider : GCP, AWS

Network storage system : NFS, iSCSI, Gluster, Ceph, Cinder, Flocker

Batch execution

Kubernetes는 Batch, CI 작업을 관리할 수 있습니다. 원한다면 실패 시 컨테이너를 대체하는 것도 가능합니다.

도커의 개념을 알고계신분이나 다른 오케스트레이션 툴을 사용한 경험이 있으신 분이라면 이해가 쉬울 것 같습니다.

도커 스웜과 Kubernetes의 도입을 고민하실 수 있는데, 도커 엔진만으로 간편하게 웹 서비스 컨테이너를 분산해서 사용하고 싶다면 스웜 모드를, 시간과 비용이 충분하고 좀 더 많은 기능이 필요하다면 Kubernetes를 선택하는게 좋을 것 같습니다.

그럼 다음 포스팅에서는 Kubernetes를 직접 사용해보면서 각각의 특징을 살펴보겠습니다.

감사합니다.

이미지출처 : https://medium.com/google-cloud/kubernetes-101-pods-nodes-containers-and-clusters-c1509e409e16

Get to know us better!
Join our official channels below.

Telegram(EN) : t.me/Humanscape
KakaoTalk(KR) : open.kakao.com/o/gqbUQEM
Website : humanscape.io
Medium : medium.com/humanscape-ico
Facebook : www.facebook.com/humanscape
Twitter : twitter.com/Humanscape_ICO
Reddit : https://www.reddit.com/r/Humanscape_official
Bitcointalk announcement : https://bit.ly/2rVsP4T
Email : support@humanscape.io

--

--