Kubernetes란?

개미개미개·2025년 1월 22일

DevOps

목록 보기
6/7

쿠버네티스란?

컨테이너 기반의 오픈 소스 가상화 프로젝트

쿠버네티스는 클라우드 네이티브 구성요소를 완전히 수행할 수 있는 플랫폼이다.

그러려면 클라우드 네이티브가 무엇을 말하는지를 알아야한다.

🔎 클라우드 네이티브?

"클라우드의 장점을 최대한 활용하여 정보 시스템을 구축 및 실행하는 환경"

클라우드 네이티브 기술은 조직이 퍼블릭, 프라이빗, 그리고 하이브리드 클라우드와 같은 현대적이고 동적인 환경에서 확장 가능한 애플리케이션을 개발하고 실행할 수 있게 해준다. 컨테이너, 서비스 메쉬, 마이크로서비스, 불변(Immutable) 인프라, 그리고 선언형(Declarative) API가 이러한 접근 방식의 예시들이다.

이 기술은 회복성, 관리 편의성, 가시성을 갖춘 느슨하게 결합된 시스템을 가능하게 한다. 견고한 자동화 기능을 함께 사용하면, 엔지니어는 영향이 큰 변경을 최소한의 노력으로 자주, 예측 가능하게 수행할 수 있다.

라고 CNCF 에서 발표했다.

클라우드 네이티브 기술, 애플리케이션, 아키텍처, 개발방법론, 조직, 프로세스 등 다양한 용어와 결합하여 다양한 의미로 사용된다.

기존 애플리케이션과 클라우드 네이티브의 차이점

  • 기존 애플리케이션들은 장기간에 걸쳐 긴밀하게 결합된 모놀리식 기반 위에서 동작한다.
  • 클라우드 네이티브 애플리케이션은 소규모 서비스 단위의 마이크로서비스로 구성되며 가상 컨테이너 환경에서 동작되도록 설계되고 구현된다.
구분기존 애플리케이션클라우드네이티브 애플리케이션
애플리케이션 구조MonolithicMicroService
결합크고, 조밀한 결합느슨한, 서비스 기반
실행 환경물리서버 중심가상 컨테이너 중심
확장수직 확장수평 확장
인프라 의존성인프라 의존인프라 독립, 이식성 보장
개발 방법폭포수애자일
빌드 및 배포수작업CI/CD 자동화, 짧은 시간 & 지속적
조직 구조단절된 개발, 운영, 보안 팀데브옵스 협업

클라우드 네이티브의 구성요소

  1. 마이크로 서비스 : 독립적인 실행 및 배포가 가능한 마이크로서비스
  2. 컨테이너 : 경량화된 컨테이너 단위 수평적 확장
  3. DevOps : 개발팀과 운영팀간 단일한 협업 프로세스
  4. CI/CD : 소규모 개발팀별 자율적, 독립적 서비스 운영

모놀리식 아키텍쳐

  • 전통적인 아키텍처로 기존에 사용하던 서비스 방법
  • 서비스가 하나의 애플리케이션으로 돌아가는 구조
  • 기존의 개발 방식을 사용해서 개발하여 간단히 배포
  • 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍처
  • 다양한 기능을 동작하는 서비스를 서버에서 실행하여 서비스

단점

  1. 모놀리식 아키텍처를 스케일링하게 되면 기존의 애플리케이션을 그대로 복제하여 로드밸런싱을 하고 불필요한 서비스까지 모두 복제한다.

  1. 종속적인 라이브러리의 충돌이 생기는데 그 이유는 각각의 기능들은 서로 다른 기능을 제공하기 때문에 버전의 종속성을 필요로한 경우가 존재하며 각 기능에 따른 라이브러리를 매 업데이트마다 관리하기가 매우 어렵다.

  1. 조금만 수정해도 전체를 빌드하고 배포하는 과정이 필요해진다.
    소스코드 전체가 하나로써 동작하기 때문에 작은 수정이 있어도 전체를 빌드하여 다시 배포해야 한다.
    프로그램의 크기가 어느정도 커지면 한 번 컴파일해서 전체 테스트를 돌려도 30분에서 수 시간이 소모된다.

마이크로서비스 아키텍쳐

  • 모놀리식 아키텍처의 대안으로, 반대되는 개념
  • 애플리케이션의 각각의 기능을 분리하여 개발 및 관리
  • 서비스 단위의 빠른 개발, 용이한 배포, 서비스 단위 고효율 저비용 Scale Out 구조
  • 분산 시스템 환경에서 Transaction 보장, 테스트, 배포, 관리 복잡

장점

  1. 서비스 단위 고효율 저비용 Scale-Out 구조이다.
    즉, 서비스 단위로 스케일링이 가능하며 불필요한 서비스는 줄이고 더 많은 자원이 필요한 서비스는 확장이 가능하다.

  1. 라이브러리에 대한 종속성을 고민하지 않아도 된다.

단점

분산시스템 환경에서의 Transaction 보장과 테스트, 배포, 관리가 복잡하다는 점이 큰 단점이다.
이러한 문제를 해결하기 위해 가상화 기술이 나온다.

가상화기술이란 전통적으로 하드웨어 종속된 리소스를 사용하여 서비스를 만드는 기술이다.
가상화를 사용하면 물리적 머신의 기능을 여러 사용자 또는 환경에 배포해 물리적 머신을 최대한 활용 가능하다.

이런 가상화 기술들을 사용한게 도커를 의미하고 도커와 컨테이너에 대한 내용은 따로 다룬 내용이 있으니 참고 바란다.
가상화 기술들을 사용한 컨테이너들을 오케스트레이션 하는 것이 쿠버네티스이다.

컨테이너들의 자동 배포, 확장, 복구를 통해 높은 가용성과 확장성을 위해 사용한다.

profile
개미는 오늘도 일을 합니다.

0개의 댓글