Container Orchestration/Kubernetes

쿠버네티스 배포 도구 : Kubeadm vs Kubespray vs Kops

Somaz 2022. 5. 3. 17:06
728x90
반응형

Overview

 

오늘은 쿠버네티스의 클러스터를 설정하는 도구인 Kubeadm 과 Kubespray 그리고 Kops 차이를 알아보고자 한다.

먼저, 많은 웹 사이트의 Article에서는, Kubeadm는 quick start를 위해서 사용하기 좋고, Kubespray는 production 레벨에서 적용할 수 있는 솔루션이라고 말하고 있다.

또한, 배포 프로세스를 용이하게 하기 위해 `Kops` , `Kubeadm` , `Kubespray` 또는 `Kubo` 와 같은 여러 도구 를 사용할 수 있다 .

 

차트는 Mermaid Live Editor를 활용해서 그렸다.

 


Kubeadm  vs Kubespray vs Kops

 


 

Kops

핵심 Kubernetes 팀에서 유지 관리하는 kops의 가장 큰 장점은 향후 기본 설치 방법이 될 가능성이 높다는 것이다. 

이 도구의 주요 기능은 다음과 같다.

  • 자동화된 인프라 생성 및 클러스터 배포/프로비저닝
  • 클라우드 공급자의 기본 기능 지원
  • 업데이트 및 업그레이드 지원

 

kops를 사용하면 다양한 맞춤형 Kubernetes 애드온 을 추가할 수도 있다 . 

이 외에도 클러스터 매니페스트를 통해 노드에 후크 및 파일로 컨테이너를 추가할 수 있다. 

 

 


 

Kubeadm

kubeadm 은 Kubernetes 부트스트래핑 및 클러스터 추가 기능 설치를 단순화하도록 설계되었다. 2016년 9월 kubeadm을 발표 할 때 Kubernetes 팀은 도구가 Kubernetes 클러스터 설정의 세 가지 주요 단계 중 하나인 가상 머신 프로비저닝에 관여하지 않을 것이라고 강조했다. 

 

도구에 인프라 종속성이 없다는 점에서 kubeadm은 Kubernetes 베어메탈 설치에 적합하거나 사용자가 수동 설정 중에 사용할 수 있는 다른 도구에 대한 보완책으로 보인다.

 

 

  • kubeadm init : Control-plane 노드의 부트스트랩
  • kubeadm join : Worker 노드를 부트스트랩하고 Cluster에 조인
  • kubeadm upgrade : Kubernetes Cluster를 신규 버전으로 업그레이드
  • kubeadm config : kubeadm 1.7 이하 버전 사용 시 Cluster를 초기화할 때 kubeadm upgrade를 위한 Cluster 설정 kubeadm token : kubeadm join을 위한 토큰 관리
  • kubeadm reset : kubeadm 혹은 kubeadm join에 의해 호스트에 발생한 변경 사항을 원복
  • kubeadm version : 버전 출력
  • kubeadm alpha : 커뮤니티로부터 피드백을 수집하기 위해 준비된 기능들을 미리 확인

 

공식 문서 에 따르면 kubeadm은 다음 시나리오에서 사용할 수 있다.

  • 처음으로 쿠버네티스를 시험해보기 위해
  • Kubernetes에 이미 숙련된 ​​경우 클러스터 배포 또는 앱 테스트
  • 일부 다른 설치 프로그램이 있는 복잡한 시스템에서 빌딩 블록으로 악용

 

 

Pivotal과 Google에서 원래 개발한 설치 프로그램인 Kubo 도 있다 . 여러 클라우드 제공업체를 지원하지만 Kubo는 BOSH를 사용하여 특정 개발자 전문 지식이 필요한 Kubernetes 환경을 관리한다.

 

 

 


 

Kubespray

Kubespray는 상용서비스에 적합한 보안성과 고가용성이 있는 쿠버네티스 클러스터를 배포하는 오픈 소스 프로젝트이다. 처음에는 kargo라는 이름으로 사용하다가 Kubespray로 프로젝트 이름이 변경되었다.

 

Kubespray는 Kubeadm처럼 별도의 로드밸런서를 사용하지 않고 노드 각각의 nginx가 리버스 프록시로 실행된다.

nginx-proxy가 전체 마스터 노드를 바라보는 구조이다.

 

그래서 쿠버네티스의 컴포넌트들은 직접 마스터 노드와 통신하지 않고 자신의 서버 안 nginx와 통신한다. 마스터노드의 장애 감지는 헬스체크를 이용해 nginx가 알아서 처리한다.

 

또한 90명 이상의 기여자와 함께 커뮤니티 프로젝트로 배양된 Kubespray 는 클라우드 또는 온프레미스에 Kubernetes 클러스터를 배포하도록 설계되었다. 

 

원래 Ansible 플레이북을 기반으로 하는 이 도구는 다음과 같은 기능이 있다.

 

  • AWS, Google Compute Engine, Microsoft Azure, OpenStack 및 베어메탈 배포 지원
  • Kubernetes 고가용성 클러스터 배포
  • 6개의 네트워크 플러그인 중에서 선택 가능한 구성 가능한 아키텍처
  • 다양한 Linux 배포판 지원
  • 지속적인 통합 테스트 지원
  • kubeadm 언더 후드

 

 

세 가지 도구를 비교 하면 

Kubeadm은 클러스터의 기본 구성을 위한 도구, Kubespray는 Ansible 기반의 다양한 환경에서의 배포 도구, 그리고 Kops는 클라우드 환경에서 클러스터의 전체 생명 주기를 관리하기 위한 도구로 사용된다.

 

 


 

Reference

https://github.com/kubernetes-sigs/kubespray/blob/master/docs/comparisons.md

728x90
반응형