kubernetes

🔠 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼

등장 배경

전통적인 배포로 여러 물리 서버에서 각 애플리케이션을 실행을 하였으며 리소스가 충분히 활용되지 않고 비용 부담이 컸었다. 이것을 해결하고자 물리 서버 안에서 여러 가상 시스템을 실행하여 애플리케이션을 격리하는 가상화가 도입이 되었으며 더 나은 확장성을 제공했다. 하지만 이 가상화 시스템 또한 OS안에서의 불필요한 리소스가 누적되기에 유사한 VirtualMachine으로 애플리케이션과 그에 필요한 라이브러리, 설정 등을 하나의 독립된 단위로 동작할 수 있는 컨테이너 배포가 생겨났으며 이 컨테이너를 관리하기 위한 오픈소스 플랫폼이 Kubernetes이다. [공식]Kubernetes 등장 배경

Container

Container 하면 떠오르는게 docker다. 하지만 docker는 OCIOpen Container Initiative 에서 정의한 표준으로 container 기술을 기반으로 한 여러 container runtime중에 하나이며 많이 사용된 플랫폼이므로 container = docker 로 한정지으면 안되며 docker 이외에도 containerd, runc, cri-i 같은 다양한 container runtime이 있다.

Process 별로 자원을 격리해서 사용하는 cgroup과 특정 directory로 권한을 제한하는 chroot등으로 격리 환경을 구성할 수 있는 Linux를 disk의 파일변경 사항을 Layer 형태로 저장하는 Filesystem을 합해 Container라는 개념이 탄생했다.

출처 : docker, container와 Virtual Machine 비교

Container Orchestration System

Container 기술이 등장하게 되면서 개발 과정 전체에 혁신을 가져오긴 했지만 Container 수가 많아지게 되면서 장애 포인트가 다수 발생되고 관리 포인트 또한 복잡하게 되면서 이 문제점들을 해결하고자 Container Orchestration이 등장하게 되었다. 수동 제어 부분을 전부 자동화하므로 시스템 운영이 훨씬 수월해졌으며 장애가 발생하면 자동으로 fix가 되는 Kubernetes기술이 탄생했다.

Kubernetes 특징

Kubernetes는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이며 대표적인 특징으로 선언적 API이다.

  • 선언적declarative API
    • container가 어떤 상태이길 원하지만 Kubernetes에 설정하면 지속해서 container의 상태를 확인
    • 설정한 상태가 아닌 상태라면 설정한 상태로 자동 복구되는 장점
    • 앱 재시작은 kubernetes 시스템 내부동작으로 사용자가 제어할 수 없음
  • 워크로드 분리
  • 어디서나 실행 가능

Leave a Comment