쿠버네티스, 이것만 알면 된다! - #1 쿠버네티스란 무엇일까?
쿠버네티스란 무엇일까요?
쿠버네티스란 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템입니다.
1주일에 수십억 개의 컨테이너를 생성하는 Google이 내부 배포시스템으로 사용하던 'borg'를 기반으로 2014년 프로젝트를 시작했고, 여러 커뮤니티의 아이디어와 좋은 사례들을 모아 빠르게 발전하였습니다. 이후 Google이 CNCF(Cloud Native Computing Foundation)에 코드를 기부함으로써, 쿠버네티스는 오픈 소스 프로젝트가 되었습니다.
쿠버네티스는 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향하고, 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 합니다. 서버리스, CI/CD, 머신러닝 등 다양한 기능이 쿠버네티스 플랫폼 위에서 동작합니다.
쿠버네티스가 왜 필요할까요?
쿠버네티스를 사용하면 컨테이너화된 애플리케이션 환경(Containerized Application)을 탄력적으로 실행할 수 있게 됩니다!
프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야 합니다. 예를 들어, 컨테이너가 다운된다면 다른 컨테이너를 다시 시작하여 가동 중지 시간을 최소화하여야 합니다.
이러한 동작을 시스템에 의해 처리할 수 있다면 어떨까요?
이러한 문제를 시스템에 의해 관리되도록 하는 것이 쿠버네티스의 역할입니다!
쿠버네티스에서 제공하는 기능은 어떤 것들이 있을까요?
쿠버네티스의 공식 홈페이지를 참고하면, 다음과 같은 기능들을 제공함을 알 수 있습니다.
출처: https://www.xenonstack.com/insights/kubernetes-deployment/
- 서비스 디스커버리와 로드 밸런싱 - DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출
- 스토리지 오케스트레이션 - 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재
- 자동화된 롤아웃과 롤백 - 원하는 상태를 서술하고 현재 상태를 원하는 상태로 설정한 속도에 따라 변경 가능
- 자동화된 빈 패킹 - 각 컨테이너가 필요로 하는 CPU와 메모리(RAM)를 제공
- 자동화된 복구(self-healing) - 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체
- 시크릿과 구성 관리 - 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리
마무리
이번 장에서는 쿠버네티스가 무엇인지, 왜 필요한지에 대해서 알아보았습니다.
다음 장에서는 쿠버네트스의 핵심인 "Desired State" 에 대해서 알아봅시다!