Kubernetes 란?

seokhyun·2025년 8월 25일

Kubernetes

목록 보기
1/7
post-thumbnail

쿠버네티스가 뭘까? 쿠버네티스를 처음 접하거나 단어만 많이 들어보고 정확한 개념이 잡히지 않은 사람들을 위한 정리.

쿠버네티스의 기원

먼저 Kubernetes의 기원과 단어의 의미에 대해서 알아봅시다.
쿠버네티스라는 단어의 기원을 알면 조금 더 이해가 쉬워요.

  • Kubernetes :
    쿠버네티스란 명칭은 키잡이(helmsman), 파일럿, 조타수, 조종사을 뜻하는 그리스어에서 유래했다. 그래서 Kubernetes의 로고도 조타수가 조작하는 핸들인 키(타·Rudder) 모양입니다.

그래서 뭐가 중요하냐? 무언가를 조종 녀석이구나 라고 일단 알아두면 됩니다.

K8s는 뭐야?

K8s라는 표기는 "K"와 "s"와 그 사이에 있는 8글자를 나타내는 약식 표기이다. 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화했다.
그래서 Kubernetes = K8s 입니다.

개념

그래서 우리가 알고 싶어하는 Kubernetes란 뭐냐?

쿠버네티스는 요놈이죠? google에 검색하면 가장 먼저 나오는 요녀셕.
'k8s' 또는 'kube'라고도 하는 Kubernetes는 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 스케줄링 하고 자동화하기 위한 컨테이너 오케스트레이션 플랫폼입니다.
그래서 아까 무언가를 조종한다고 했는데 그게 바로 컨테이너 집합입니다. Kubernetes는 컨테이너를 관리하는 오케스트레이션 플랫폼 이라고 이해하면 됩니다.

클라우드 네이티브

항상 Kubernetes랑 같이 등장하는 단어인 클라우드 네이티브란?
클라우드 네이티브(Cloud Native): 클라우드 환경의 장점을 최대한 활용하여 애플리케이션을 구축, 배포, 운영하는 방법론.
아래와 같은 요소들을 갖추면 클라우드 네이티브 환경을 잘 구축했다고 볼 수 있어요.

클라우드 네이티브의 핵심 요소들:

  • 컨테이너화 (Containerization)
  • 마이크로서비스 아키텍처
  • 데브옵스/CI/CD
  • 오케스트레이션 ← 여기가 쿠버네티스!
  • 서비스 메시
  • 불변 인프라
  • 자동화 및 관찰 가능성 (Observability)

컨테이너 살펴보기

근데 컨테이너라는 단어가 처음 나와서 알아봐야겠죠?

컨테이너

컨테이너는 애플리케이션을 환경에 구애받지 않고 실행하는 기술입니다.

기존에는 물리 컴퓨터 혹은 가상 머신(VM)을 할당받아서 애플리케이션을 올리는 형식으로 사용했죠. 근데 이렇게 되면 해당 서버가 아닌 다른 서버에서는 동작하기 힘들어요. 정확히 말하면 환경이 다른 서버에서는 동일하게 실행이 되지 않거나 오류가 발생할 수 있어서 환경 설정을 맞춰줘야 합니다.

이 문제를 해결하기 위해서 애플리케이션과 그 실행 환경(라이브러리, 설정 등)을 함께 묶어서, 어떤 서버나 환경에서도 동일하게 실행될 수 있도록 보장하는 기술이에요.
또한 VM은 개별 OS를 포함해야해서 무겁지만, 컨테이너는 호스트 OS의 커널을 공유하여 더 가볍게 사용 가능합니다.

컨테이너 런타임

이런 컨테이너를 다룰 수 있는 도구를 컨테이너 런타임이라고 부릅니다.
저수준 런타임과 고수준 런타임이 있습니다.

저수준 런타임 (Low-level Runtime)

  • 실제로 컨테이너를 생성하고 실행하는 핵심 엔진
  • 대표적으로 runc가 있음
  • 리눅스 커널과 직접 소통하여 컨테이너 프로세스를 시작

고수준 런타임 (High-level Runtime)

  • 이미지 다운로드, 네트워킹, 저장소 관리 등의 기능 제공
  • 저수준 런타임을 호출하여 실제 컨테이너 실행
  • Docker, containerd, CRI-O 등이 여기에 해당

여기서는 더 자세히 살펴보진 않을게요! 그렇다면 컨테이너 런타임 소프트웨어를 사용해서 컨테이너를 관리할 수 있는 사용자 친화적인 플랫폼이 필요하겠죠?

Docker

저(runc), 고(Containerd)수준의 컨테이너 런타임을 활용해서 컨테이너 관리를 사용자 친화적으로 사용할 수 있게 만든 플랫폼 중 가장 유명한게 Docker라고 보시면 됩니다.

플랫폼이라더니 위에 고수준 런타임에 Docker가 왜있지?

  • Kubernetes 관점에서 보면 기존에 Docker을 컨테이너 런타임으로 썼었어요. 하지만 지금은 CRI 표준을 준수하지 않아 dockershim이 필요했던 Docker 대신, CRI를 직접 지원하는 containerd 런타임을 사용해요.

컨테이너 런타임 인터페이스(CRI): 클러스터 컴포넌트를 다시 컴파일하지 않아도 Kubelet이 다양한 컨테이너 런타임을 사용할 수 있도록 하는 플러그인 인터페이스

그럼 Docker도 컨테이너를 관리하고 아까 Kubernetes도 컨테이너를 관리한다고 했는데 무슨 차이지?

  • 정답은 Kubernetes는 오케스트레이션을 하는 겁니다.

오케스트레이션 이란?

여러 서버(노드)에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀번호나 환경 설정을 관리하고 주입해 주는 일 등을 합니다.
전체적인 관리를 하는 것이죠.

Docker는 컨테이너 하나 하나를 관리하는 것이라면 Kubernetes는 컨테이너 여러개를 큰 범위에서 관리합니다(물론 Kubernetes도 containerd, runc 런타임을 이용해서 실제 컨테이너 하나 하나를 실행하고 관리합니다).

다음 포스팅에서 Cluster Architecture에 대해서 알아보겠습니다.
https://velog.io/@krewooo/Kubernetes-Cluster-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90

profile
개발자 하고싶어 응애

0개의 댓글