쉽게 배우는 쿠버네티스 - 01
in Devops on Kubernetes
학습의 계기
카카오 클라우드 부트캠프에서 k8s를 다뤘지만 실습을 따라가는 것만으로는 내용이 전반적으로 깊고 어려워서 추가적인 공부의 필요성을 느끼게 되었다.
Devops쪽은 사실 어느정도 깊이로 공부를 해둬야하는건지 애매했었는데 이번 기회를 통해 어느정도 깊이있는 학습을 할 수 있지 않을까 기대하고 있다.
공부는 아래의 주소인 쿠버네티스의 강사 조훈님의 강의를 통해서 공부를 시작하게 되었다.
쿠버네티스의 역할, 그리고 무엇을 하는지?
1) 오케스트레이션
- 오늘날의 개발에서 애플리케이션은 더 이상 하나의 통일체가 아니라, 특정 애플리케이션이 설계된 대로 기능하도록 함께 작동해야 하는 수십 또는 수백 개의 느슨하게 결합된 컨테이너로 구성된다.
- 하지만 수백 개의 컨테이너를 끊임없이 배포하고 관리하는 일은 굉장한 리소스를 요구로 한다. 이러한 어려움을 해결하기 위해 오케스트레이션이 등장했다. 오케스트레이션이란 컨테이너화된 애플리케이션의 자동화 및 최적화를 뜻하며, 컨테이너 오케스트레이션이란 용어로 쓰인다.
- 즉 정리하자면, 컨테이너 오케스트레이션의 목적은 여러 컨테이너의 배포 프로세스를 최적화 하는데 있으며, 이것은 컨테이너와 호스트의 수가 증가함에 따라 점점 더 가치가 있게 된다는 것이다.
- 대표적인 Docker기반 컨테이너 오케스트레이션 툴로는 Docker Swarm, Kubernetes, Apache Mesos가 있으며, 우리가 알아보고 사용하고자 하는 것은 Kubernetes이다.
2) 쿠버네티스
- Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템, 즉 컨테이너 오케스트레이션 도구이다.
- Kubernetes를 사용하면 컨테이너화된 애플리케이션을 배포 및 확장하는 데 수반되는 수동 프로세스의 많은 부분을 자동화 할 수 있다.
- 즉, 여러 Linux 호스트들을 클러스터링 할 수 있으며 이러한 클러스터를 쉽고 효율적으로 관리할 수 있다. 또한 Kubernetes는 On-premise, Private Cloud, Public Cloud 등 다양한 환경에서 적용이 가능하다.
- 쿠버네티스로 인하여 각각의 컨테이너를 직접 하나씩 관리하지 않아도 된다. 개발자는 여러 컨테이너에 걸친 애플리케이션의 배치도를 작성하는데, 여기에는 각 컨테이너가 네트워킹과 스토리지를 사용하는 방식 등의 세부 정보가 담겨 있다. 쿠버네티스는 런타임에서 나머지 부분을 처리한다. 또한 기밀이나 앱 환경 구성 같은 성가신 세부 관리도 맡는다.
그래서 쿠버네티스를 왜 쓰는데 ?
이유는 몇 년 전만 해도 대부분의 소프트웨어 애플리케이션은 하나의 프로세스 또는 몇 개의 서버에 분산된 프로세스로 실행되었다.
이런 레거시 시스템은 릴리즈 주기가 느리고 비교적 업데이트가 자주 되지 않는다. 급변하는 현대 비즈니스의 요구사항을 충족시키려면 자주, 그리고 니즈에 맞춰서 빠르게 구성 요소를 변경할 수 있어야 한다.
그래서 마이크로서비스 개념이 등장했으며 이는 시스템을 독립적으로 실행되는 더 작은 구성 요소로 세분화 할 수 있다.
하지만 점차 배포 가능한 구성 요소의 수가 많아지고 데이터 센터의 규모가 커지면서 전체 시스템을 원활하게 구성, 관리할 수 있는 자동화가 필요해졌는데, 이것이 바로 쿠버네티스가 등장한 이유다.
쿠버네티스는 하드웨어 인프라를 추상화하고 데이터 센터 전체를 하나의 거대한 컴퓨팅 리소스로 제공한다.
Reference
https://www.redhat.com/ko/topics/containers/what-is-kubernetes