kubernetes Distributions(쿠버네티스 배포판 개요)

2022. 3. 1. 16:21DevOps/Docker & kubernetes

쿠버네티스는 다양한 배포판을 제공해 주고 있다. 기본적으로는 docker for desktop으로써 윈도우나 리눅스 등에 설치할 수 있는 페키지이다.

 

쿠버네티스를 활성화 할 수 있는 기능이 있는데, 싱글노드의 클러스터가 생성되며 여기서 기본적인 기능을 테스트 할 수 있다. 이것과 비슷하네 minikube라는 기능도 있는데, 다양한 드라이버를 제공해 준다. 이 드라이버를 선택해 쿠버네티스 노드를 어떤 환경(가상머신, docker 드라이버,)으로 구성할 수 있을지 선택할 수 있다. 이와 비슷한 방법으로 k3s나 microk8s 등도 있다.

 

이런 배포판을 사용하게 되면은 단일 노드에 빠르게 쿠버네티스를 구성하고 테스트 할 수 있다는 장점이 있지만, 기본적으로 멀티노드여야 하는 쿠버네티스가 로컬로 진행되는 만큼 일부 기능이 제한되는 단점도 존재한다. 

특히 AWS의 ALB, NLB, EBS등에 과 같은 클라우드 플렛폼에서만 사용가능한 기능들과, 특정 노드에만 사용가능한 기능들인 DaemonSet, Affinity, Taint, Toleration등에 대해서 사용을 할 수 없다.

 

위 그림은 크게 3가지로 분류해서 쿠버네티스 환경을 구성하는 방법을 표현한 것이다.

 

1) 온프레미스 환경 자체에 서버환경을 구성하는 방법

관리 복잡도가 굉장히 높은데, 자체 서버를 관리해야하며, 머신 구매, 운영체제 설치 등등 현실세계에서 준비해야할 목록이 너무나도 많다. 또한 그 위에 쿠버네틱스 클러스터를 직접 운영해서 구축한다고 한다면 각각 컴포넌트에 대한 관리도 필요하다. 하지만 클라우드와는 관련이 없기에 의존성은 거의 없다고 볼 정도다.

 

2) AWS EC2와 같은 클라우드 환경에서 컴퓨팅 리소스를 확보한 후 쿠버네티스 클러스터를 구축하는 방법

1번에서 조금 더 효율성을 증대 시키는 방법이다. 클라우드에서 제공해 주는 ec2 머신 위에 자체 구축을 하는데, 머신과 운영체제에 대한 관리에 대한 부담은 조금 줄어들게 된다. 즉 현실세계에서 준비할 목록을 거희 소멸시킨다고 볼 수 있다. 하지만 여전히 쿠버네틱스 관리에는 부담이 있는 방법이다.

 

==> 이 두가지 방법에서는 쿠버네티스 클러스터를 자체 구축할 수 있는 옵션들이 있는데 kops, kubespray, kubeadm 등이 있다.

 

3) 클라우드 프로바이더에서 제공하는 메니지드 프로그렘을 사용하는 방법

관리보다는 이용하는데 초점을 맞추고 싶을때 이 방법을 사용하면 된다. 클러스터 운영에 대한 부담을 줄일 수 있으며 쿠버네티스 이용 측면에서 문제 해결을 할 수 있다.

 

쿠버네티스 클러스터를 구축할 때는 버전을 선택하는것도 중요하다. 이 버전이 업데이트 됨에 따라서 api리소스의 스팩도 달라지기 때문이다.(springboot 같은거 써 보면 대충 어떤 의미인지 알 수 있을 것 이다.) 또한 breaking changes가 있는지 꼼꼼히 확인할 필요도 있다.