for Developer/Kubernetes

k8s::쿠버네티스란 무엇인가

Dev:P 2020. 4. 6. 22:39
반응형

What is Kubernetes(k8s)?

구글이 2014년 오픈소스화한 프로젝트
컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼
쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다.


Going back in time

그림1. 시간에 따른 개발환경의 변화

Traditional Deployment (전통적인 배포)

  • 애플리케이션을 물리 서버에서 실행
  • 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없기에 리소스 할당의 문제 발생
  • 여러 애플리케이션이 하나의 물리서버에 배포되면, 리소스를 전부 차지하는 애플리케이션 인스턴스가 발생 할 수 있고 이에 다른 애플리케이션의 성능저하

Virtualized Deployment (가상화된 배포)

  • 단일 물리 서버의 CPU에서 여러 가상 시스템(VM)을 실행
  • VM간의 애플리케이션을 격리하고 다른 애플리케이션에서 자유롭게 액세스 할 수 없으므로, 일정 수준의 보안성 제공
  • 효율적인 리소스 활용, 애플리케이션 추가 및 업데이트의 용이성, 하드웨어 비용 절감

Container Deployment (컨테이너 배포)

  • VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유
  • VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU, 프로세스 공간 등이 있다.
  • 기본 인프라와 디커플링 되어있기 때문에 클라우드나 OS 배포본에 모두 이식 가능하다.
  • VM 이미지를 사용하는 것에 비해 컨테이너 이미지 생성이 보다 쉽고 효율적
  • 배포 시점이 아닌 빌드/릴리즈 시점에 애플리케이션 컨테이너 이미지를 만들기 때문에, 애플리케이션이 infrastructure에서 분리된다.
  • Ubuntu, RHEL, CoreOS, on-premises, 주요 퍼블릭 클라우드와 어디에서든 구동 가능

Why you need Kubernetes and what it can do

Production 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야한다.

만약 컨테이너가 다운되면 다른 컨테이너를 다시 시작해야하는데, 이 문제를 시스템에서 처리한다면 더 쉽게 해결할 수 있지 않을까?

이것이 쿠버네티스가 필요한 이유다.그리고 쿠버네티스는 아래의 서비스를 제공한다.

 

  • 서비스 디스커버리와 로드 밸런싱
  • 스토리지 오케스트레이션
  • 자동화된 롤아웃과 롤백
  • 자동화된 빈 패킹(bin packing)
  • 자동화된 복구(self-healing)
  • 시크릿과 구성 관리

 

 

 

출처: https://kubernetes.io/docs/concepts/

반응형