Related to: MLOps

쿠버네티스(Kubernetes)란?

쿠버네티스(Kubernetes, K8s)는 컨테이너화된 워크로드와 서비스를 효율적으로 배포, 관리, 확장, 자동화하기 위한 오픈소스 플랫폼입니다. 컨테이너 오케스트레이션 도구로서, 여러 대의 서버(가상 머신 또는 물리 서버)에 분산된 컨테이너를 클러스터 형태로 묶어 관리할 수 있게 해줍니다.

쿠버네티스는 2014년 구글이 오픈소스로 공개했으며, 구글이 15년 넘게 대규모 컨테이너 워크로드를 운영해온 경험과 커뮤니티의 다양한 아이디어가 결합된 결과물입니다. 이름은 그리스어로 ‘조타수(helmsman)’ 또는 ‘파일럿’을 의미하며, K8s라는 약어로도 자주 불립니다.

주요 특징

·       자동화된 배포 및 관리: 애플리케이션의 배포, 확장, 업데이트, 장애 복구 등 운영 작업을 자동화합니다.

·       이식성과 확장성: 퍼블릭/프라이빗/하이브리드 클라우드, 베어메탈, 가상머신 등 다양한 인프라 환경에서 동작합니다.

·       셀프 힐링(Self-healing): 컨테이너가 장애를 일으키면 자동으로 재시작하거나 대체합니다.

·       서비스 디스커버리 및 로드밸런싱: 내부적으로 서비스 탐색과 부하 분산을 지원합니다.

·       리소스 관리: CPU, 메모리 등 자원 할당을 자동으로 최적화합니다.

·       확장 가능한 생태계: 다양한 오픈소스 및 상용 툴, 클라우드 서비스와 연동이 가능합니다.

아키텍처 개요

쿠버네티스 클러스터는 크게 컨트롤 플레인(관리 서버)과 워커 노드(애플리케이션이 실제 실행되는 서버)로 구성됩니다. 컨테이너는 ‘포드(Pod)‘라는 논리 단위로 묶여 배포되며, 쿠버네티스 API를 통해 관리됩니다.

Man giving a talk on Google Kubernetes Engine at the 2017 Google Cloud Summit.

활용 예시

·       마이크로서비스 아키텍처 기반의 대규모 서비스 운영

·       다양한 환경(온프레미스, 퍼블릭 클라우드 등)에서 일관된 애플리케이션 배포

·       DevOps 및 CI/CD 파이프라인 자동화

쿠버네티스는 현대 클라우드 네이티브 애플리케이션의 표준 플랫폼으로 자리 잡았으며, 많은 기업과 개발자들이 컨테이너 기반 인프라를 효과적으로 운영하기 위해 사용하고 있습니다.

쿠버네티스의 핵심 원칙과 설계 철학

1. 선언적 구성(Declarative Configuration)

쿠버네티스는 시스템의 ‘원하는 상태(desired state)‘를 선언적으로 정의하고, 현재 상태(current state)와 지속적으로 비교하여 자동으로 일치시키는 방식으로 동작합니다. 사용자는 명령형이 아닌 선언형으로 리소스를 관리하며, 시스템은 이 선언을 바탕으로 자동 조정과 자가 치유(self-healing)를 수행합니다.

2. 자동화와 자율 운영

반복적이고 수동적인 운영 작업(배포, 확장, 복구 등)을 자동화하여 운영 효율성과 신뢰성을 극대화합니다. 장애가 발생하면 자동으로 복구하며, 롤링 업데이트, Canary 배포 등 다양한 배포 전략도 자동화할 수 있습니다.

3. 확장성과 이식성

다양한 인프라 환경(온프레미스, 퍼블릭/프라이빗 클라우드 등)에서 동일하게 동작할 수 있도록 설계되었습니다. 시스템의 모든 구성 요소는 독립적으로 분산되어 있으며, API 기반 상호작용을 통해 유연하게 확장할 수 있습니다.

4. 투명하고 개방적인 API

쿠버네티스 컨트롤 플레인은 모든 정보를 투명하게 API로 공개하며, 내부에 숨겨진 인터페이스가 없습니다. 각 구성 요소는 API를 통해 원하는 상태를 감시하고, 필요한 작업을 독립적으로 수행합니다.

5. 기능 단위의 분산과 동적 그룹화

각 기능이 독립적으로 분산되어 운영되며, 레이블과 어노테이션을 통해 리소스들을 유연하게 그룹화하고 관리할 수 있습니다. 이를 통해 대규모 환경에서도 유연하게 리소스를 할당하고 관리할 수 있습니다.

6. 재현 가능하고 버전 관리 가능한 인프라

인프라와 애플리케이션 배포 과정을 코드로 관리하며, 버전 관리와 재현이 용이하도록 설계되어 있습니다. 이는 불변 인프라(immutable infrastructure)와도 밀접하게 연관됩니다.

요약

쿠버네티스의 설계 철학은 선언적 구성, 자동화, 확장성, 투명한 API, 분산 아키텍처, 그리고 재현 가능한 인프라에 기반을 두고 있습니다. 이러한 원칙들은 대규모, 복잡한 클라우드 네이티브 환경에서 신뢰성 있고 효율적인 서비스 운영을 가능하게 합니다.

참조

https://kubernetes.io/ko/docs/concepts/overview/   

https://www.redhat.com/ko/topics/containers/what-is-kubernetes  

https://cloud.google.com/learn/what-is-kubernetes      

https://www.ibm.com/kr-ko/topics/kubernetes    

https://ko.wikipedia.org/wiki/쿠버네티스       

https://aws.amazon.com/ko/what-is/kubernetes-cluster/

https://kubernetes.io/ko/docs/concepts/overview/ 

https://velog.io/@tmddud73/쿠버네티스-1-기본-개념   

https://blog.naver.com/simula/223895805242?fromRss=true&trackingCode=rss 

https://www.cncf.co.kr/blog/k8s-barriers/ 

https://newdeal123.tistory.com/102