📖 쿠버네티스란?

  • 쿠버네티스는 구글에서 개발한 오픈 소스 기반의 컨테이너 오케스트레이션입니다.

  • 쿠버네티스는 그리스어로 키잡이를 뜻하는데요, 현재 가장 널리 사용되고 있는 오케스트레이션 툴로서, 쿠베르네티스, 쿠베 등등 여러 이름으로 불리고 있습니다.

  • 쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리하기 위한 오픈 소스 플랫폼입니다. Google에서 개발된 것으로 시작되었으며, 현재는 Cloud Native Computing Foundation (CNCF)의 주도하에 커뮤니티에 의해 관리되고 있습니다.



📖 쿠버네티스를 접하게 되는 경우

  • 모놀리식을 마이크로서비스로 나누거나 마이크로서비스 기반 시스템을 처음부터 구축할 때 수많은 서비스만큼 수많은 컨테이너가 생성됩니다. 이런 분산 시스테에서 정신없이 많은 컨테이너들을 능숙하게 관리하는 쿠버네티스를 만날 수 있습니다.


📖 쿠버네티스 : 등장배경

  • 관리해야 하는 컨테이너 이미지가 점점 많아지면서 컨테이너만으로 구성된 인프라의 문제점이 드러나기 시작합니다.

  • 처음 몇개 정도의 컨테이너는 수동으로 직접 관리할수 있었지만 그 수가 수십 개에서 수백 개에 이르게 되면서 각 서버 인스턴스의 상태 체크, 배포, 죽은 컨테이너를 다시 살리는 업무, 갑작스러운 사용자 증가 / 감소에 따른 호스트 서버의 성능 스케일업 / 스케일 아웃 업무 등을 자동으로 처리해 줄 툴이 필요해졌습니다. 그래서 등장한 것인 바로 컨테이너 오케스트레이션 툴입니다.



📖 쿠버네티스 : 역사

  • 구글은 2014년 중순에 자사 내부 컨테이너 클러스터 관리 서비스인 보그를 오픈 소스 버전으로 공개했고, 2015년 7월 21일에는 쿠버네티스 v1.0을 출시했습니다.

  • 이 때 구글은 리눅스 재단과 파트너쉽을 맺고 클라우드 네이티브 컴퓨팅 재단을 설립했습니다. 이후로 이 줄임말인 CNCF가 쿠버네티스를 관리하고 있습니다.

  • 현재는 구글, 아마존, 애저 등등 주요 클라우드 벤더와, 오라클 같은 소프트웨어 벤더들이 각자의 브랜드로 쿠버네티스 배포판을 제공하고 있으며, 컨테이너 오케스트레이션의 사실상의 표준으로 자리 잡은 형국입니다.



📖 쿠버네티스 : 개념

  • 쿠버네티스의 개념은 크게 두 가지로 나누어 설명이 가능합니다.

  • 첫째, 선언적 구성과 컨트롤러입니다. 사용자가 원하는 상태를 선언해 두면 쿠버네티스가 능동적으로 조치합니다. 마치 에어컨 온도를 24도로 설정해두면 온도가 24도보다 높을 경우 에어컨이 작동되고 낮으면 멈추는 것과 같은 개념입니다. 이러한 선언는 YAML 형태로 이루어집니다.

  • 컨트롤러는 선언문이 원하는 상태를 확인하고 현재 상태를 관찰한 후 불일치할 경우 자동으로 조치를 취합니다. 그 결과 현재의 상태는 원하는 상태와 일치하게 됩니다. 쿠버네티스는 수많은 컨트롤러로 구성되어 있으며 각 컨트롤러는 자체적인 컨트롤 루프를 수행합니다.

  • 둘째, 암시적 등적 그룹화입니다. 명시적 / 정적 그룹화는 우리 팀원은 상준1, 상준2 입니다와 같은 명시적 표현입니다. 암시적 / 동적 그룹화는 우리 팀원은 오렌지색 옷을 입은 사람들입니다와 같은 암시적 표현인 것이죠. 오렌지색 옷의 착용 여부에 따라 구성원이 언제든 바뀌기 때문에 이는 동적 그룹입니다.



📖 쿠버네티스 : 특징

  • 자동화된 배포: 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포할 수 있습니다. 이는 개발자가 애플리케이션을 배포하고 관리하는 프로세스를 단순화하고 효율화합니다.

  • 자동화된 스케일링: 쿠버네티스는 애플리케이션의 부하에 따라 자동으로 스케일링할 수 있습니다. 이는 트래픽이 증가할 때 자원을 동적으로 할당하여 시스템의 성능을 유지하고, 트래픽이 감소할 때 자원을 줄여 비용을 절약할 수 있습니다.

  • 자원 관리: 쿠버네티스는 컨테이너가 실행되는 노드에 대한 자원(예: CPU, 메모리)를 관리하고 최적화합니다. 이를 통해 애플리케이션의 성능을 향상시키고, 시스템 전체의 효율성을 높입니다.

  • 서비스 디스커버리 및 로드 밸런싱: 쿠버네티스는 서비스 간의 통신을 관리하고, 클러스터 내에서 애플리케이션을 사용할 수 있도록 서비스 디스커버리 및 로드 밸런싱을 제공합니다.

  • 자동 복구: 쿠버네티스는 애플리케이션 또는 컨테이너가 실패할 경우 자동으로 복구할 수 있는 기능을 제공합니다. 이는 시스템의 신뢰성을 높이고 가용성을 보장합니다.

profile
나 혼자 보려고 만든 개발 일기

0개의 댓글