본문으로 바로가기

쿠버네티스 (kubernetes) 란

category n년차 개발자 2019. 12. 11. 17:36
반응형


쿠버네티스 (kubernetes)
쿠버네티스(kubernetes) 라는 단어를 몇일전 Kubernetes Forum Seoul을 잠여한 지인에게 처음 들었습니다.
저와 같이 쿠버네티스(kubernetes)에 대해 몰랐던 분들이 많을꺼 같아서 밑 링크에 자세히 나와있지만

참조 https://kubernetes.io/ko/

참조 https://developer.ibm.com/kr/cloud/2019/02/01/easy_container_kubernetes/

 

운영 수준의 컨테이너 오케스트레이션

쿠버네티스(K8s)는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템입니다. 애플리케이션을 구성하는 컨테이너들의 쉬운 관리 및 발견을 위해서 컨테이너들을 논리적인 단위로 그룹화합니다. 쿠버네티스는 Google에서 15년간 프로덕션 워크로드 운영한 경험을 토대로 구축되었으며, 커뮤니티에서 제공한 최상의 아이디어와 방법들이 결합되어 있습니다. 행성 규모 확장성 Google이 일주일에 수십억 개의 컨테이너들을 운영하게 해준 원

kubernetes.io

 

컨테이너와 쿠버네티스를 쉽게 이해하기 - IBM Developer

kubernetes docker container 쿠버네티스 도커 컨테이너

developer.ibm.com

제가 해석한대로 간단하게 포스팅 해보려고 합니다.

 

 

1. 쿠버네티스 란?

컨테이너화된 workload와 서비스를 관리하기 위한 이식성이 있고 확장가능한 오픈소스 플랫폼. 
     * woarload(할당량) : 시스템에 의해 실행되어야 할 작업의 할당량. 
     * 컨테이너 : 애플리케이션과 애플리케이션을 구동하는 환경을 격리한 공간.

 

2. 쿠버네티스는 왜 컨테이너를 사용할까?

- Traditional Deployment
물리서버 -> 운영체제 -> 애플리케이션, 애플리케이션, ... 애플리케이션
(ex.운영체제 -> 웹서버)
애플리케이션을 물리 서버에서 실행.
문제점 : 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당의 문제가 발생.

* 리소스(resource) : 프로그램이 요구하는 자원 


- Virtualized Deployment
물리서버 -> 운영체제 -> VM -> 운영체제 -> 애플리케이션
                             -> VM -> 운영체제 -> 애플리케이션
                             -> VM -> 운영체제 -> 애플리케이션
문제점 : VM간에 애플리케이션을 격리하고 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 엑세스 할 수 없음.

- Container Deployment
물리서버 -> 운영체제 -> 컨테이너, 컨테이너, ... 컨테이너 -> 웹서버

 

 

위에 그림을 보면 Virtualized Deployment 와 Container Deployment가 비슷해보입니다.

그럼 쿠버네티스는 왜 컨테이너를 사용하는지 알아보겠습니다.

VM(Virtual Machine)과 Container의 차이점 

위 사진처럼 VM은 여러개의 운영체제의 사용 할 수있어 여러 개의 환경을 구성 할 수있습니다.
VM은 운영체제가 갖춰져 있고 그 위에 애플리케이션을 구성하고 있어 운영체제간의 접근성이 용이하지 않습니다.
반면 Container는 물리서버의 운영체제 하나를 공유하고 있습니다. 이 부분 말고도 다른 차이점이 있습니다.

 

  • 기민한 애플리케이션 생성과 배포: VM 이미지를 사용하는 것에 비해 컨테이너 이미지 생성이 보다 쉽고 효율적임.
  • 지속적인 개발, 통합 및 배포: 안정적이고 주기적으로 컨테이너 이미지를 빌드해서 배포할 수 있고 (이미지의 불변성 덕에) 빠르고 쉽게 롤백할 수 있다.
  • 개발과 운영의 관심사 분리: 배포 시점이 아닌 빌드/릴리스 시점에 애플리케이션 컨테이너 이미지를 만들기 때문에, 애플리케이션이 인프라스트럭처에서 디커플된다.
  • 가시성은 OS 수준의 정보와 메트릭에 머무르지 않고, 애플리케이션의 헬스와 그 밖의 시그널을 볼 수 있다.
  • 개발, 테스팅 및 운영 환경에 걸친 일관성: 랩탑에서도 클라우드에서와 동일하게 구동된다.
  • 클라우드 및 OS 배포판 간 이식성: Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine 및 다른 어디에서든 구동된다.
  • 애플리케이션 중심 관리: 가상 하드웨어의 OS에서 애플리케이션을 구동하는 수준에서 OS의 논리적인 자원을 사용하여 애플리케이션을 구동하는 수준으로 추상화 수준이 높아진다.
  • 느슨하게 커플되고, 분산되고, 유연하며, 자유로운 마이크로서비스: 애플리케이션은 단일 목적의 머신에서 모놀리식 스택으로 구동되지 않고 보다 작고 독립적인 단위로 쪼개져서 동적으로 배포되고 관리될 수 있다.
  • 자원 격리: 애플리케이션 성능을 예측할 수 있다.
  • 자원 사용량: 고효율 고집적
반응형