Cloud 스터디 잼 코리아 Kubernetes Intm

2주차 - 04. Kubernetes 소개

ziwookim 2022. 8. 30. 15:41

 

Kubernetes 란?

What is Kubernetes?

컨테이너 관리 및 조정 솔루션(컨테이너 중심의 관리 환경)으로, Google에서 최초로 개발하여 오픈소스 커뮤니티에 제공한 Cloud Native Compting Foundation 프로젝트

컨테이너화된 애플리케이션의 배포, 확장, 부하 분산, 로깅, 모니터링, 기타 관리 기능 등을 자동화 한다.

  • Paas(Platform as a Service) 솔루션의 특징

Iaas(Infrastructure as a Service) 기능도 지원 한다. 

  • 다양한 사용자 환경설정과 구성 유연성을 지원

Declarative configuration(선언적 구성)을 지원한다.

  • '선언적'으로 관리하는 경우, 일련의 명령어를 실행하는 게 아니라 달성하려는 상태를 설명하여 원하는 상태를 달성한다.
    • 배포된 시스템을 원하는 상태로 만들고 장애가 발생해도 상태를 유지한다.
    • 선언한 시스템 상태를 자동으로 유지할 수 있다.
  • 작업 부담을 덜어준다.
    • 원하는 시스템 상태가 항상 문서화되어 있기 때문에 오류의 위험성 줄어든다.

Imperative configuration(명령형 구성)을 지원한다.

  • 명령어를 실행하여 시스템 상태를 변경한다. 하지만 대규모 Kubernetes를 명령형으로 관리하는 것은 비효율적이다.
  • 명령형 구성은 간편한 임시 수정용이나 선언적 구성을 빌드하는 도구로만 사용할 수 있도록 한다.

 

Kubernetes 특징

Kubernetes features

Stateful(예)NginX, Apache 웹 서버)과 Stateless(사용자 및 세션 데이터 영구 저장 가능) 애플리케이션을 모두 지원힌다.

  • 일괄 작업 및 데몬 태스크도 지원한다.

AutoScaling

  • 자동으로 Scale을 확장 및 축소한다.

Resource Limit (자원 한도 지정)

  • 워크로드의 리소스 요청 수준과 리소스 한도를 지정하면 Kubernetes가 그대로 준수한다.
  • 리소스를 제어하여, 클러스트 내 전반적인 워크로드 성능을 개선한다.

Extensibility (확장성)

  • 개발자는 Kubernetes를 통해 플러그인, 부가기능을 확장할 수 있다.
  • 현재 많은 기능들이 Kubernetes 커스텀 리소스 정의를 통해 생성되고 있으며, Kubernetes 선언적 관리 모델을 다양한 여러 작업들에 적용하고 있다.
  • 하지만 모든 확장은 Kubernetes를 사용한 설계여야 한다.

Portability (이동성)

  • Kubernetes는 오픈소스로 여러 클라우드 서비스 제공업체 간 워크로드 이동성을 지원한다.
  • 어디든 배포할 수 있으며, 공급업체의 제약 없이 워크로드를 자유롭게 이동할 수 있다.