쿠버네티스 알아보기 2편: 쿠버네티스를 만나는 여러 가지 방법

지난 글에서 쿠버네티스가 무엇인지, 그리고 쿠버네티스를 접할 때 자주 나오는 개념과 쿠버네티스의 관계는 어떤 것인지 알아보았습니다. 이번 글에서는 쿠버네티스를 처음 구성할 때 사용할 수 있는 도구는 어떤 것들이 있는지 살펴보겠습니다. 시작이 반이라는 말을 들어보셨을 텐데요. 쿠버네티스는 용도에 따라 선택 가능한 도구가 여러 가지이고, 각 도구별로 설치 방법이나 구성 방법이 다르기 때문에 어떤 도구를 선택할지 잘 판단하는 것만으로도 절반은 한 것이라고 볼 수 있습니다. 그럼 쿠버네티스를 만나는 방법을 하나하나 알아보겠습니다.

개발 용도에 적합한 쿠버네티스 구성 방법은 ‘미니쿠브(Minikube)’입니다. 미니쿠브는 쿠버네티스 개발자들 중 특정한 주제에 관심을 가진 사람들이 모인 SIG(Special Interest Group)에서 만든 도구입니다.

미니쿠브의 특징은 로컬 시스템에 쉽게 설치 가능합니다. 리눅스, 맥 OS, 윈도우를 지원하며, 설치 파일 이외에도 각 OS가 지원하는 패키지 매니저를 활용하여 편리하게 설치할 수 있습니다. 이렇게 설치가 간단하면서도 쿠버네티스가 제공하는 대부분의 기능을 활용할 수 있다는 장점이 있습니다. 또한 인텔리제이와 같은 개발 도구들과 미니쿠브를 연계할 수 있어서 내 컴퓨터에서 개발한 프로젝트가 쿠버네티스상에서 동작하는 결과를 바로 확인할 수 있습니다. 반면, 미니쿠브는 로컬에 설치되며 단일 노드 형태로 동작하기 때문에 다중 노드를 구성하여 수행해야 하는 작업을 하기에는 곤란합니다. 또한 노드를 가상화된 형태로 생성하기 때문에 도커, 버추얼박스 등의 가상화 도구가 추가로 필요한 단점이 있기도 합니다.

미니쿠브를 세 줄로 요약해 보자면 아래와 같이 정리할 수 있겠네요.
- 용도 : 간단한 학습 및 개발 환경 구성
- 장점 : 설치가 쉽고 개발 도구와의 연계가 편리함
- 단점 : 단일 노드만 지원하며 추가적인 가상화 도구 필요함

학습 및 개발 환경을 넘어 보다 실질적으로 활용 가능한 쿠버네티스 클러스터를 구성하고 싶은데 리소스가 충분하지 않다면 ‘k3s’를 추천드립니다. k3s는 랜처랩스(Rancher Labs)에서 개발한 경량의 쿠버네티스 배포판으로 현재 쿠버네티스를 관리하는 재단인 CNCF(Cloud Native Computing Foundation)의 샌드박스(초기 단계) 프로젝트로 육성되고 있습니다.

k3s의 주요 특징으로는 단일 파일로 이루어진 k3s 실행 파일을 통해 서버와 에이전트만 구동하면 쿠버네티스의 각 구성 요소가 간편하게 설치되면서 쿠버네티스 클러스터를 쉽게 구성할 수 있다는 점입니다. 특히 내장 구성 요소 중 쿠버네티스의 각종 환경 정보를 저장하는 ETCD는 경량의 내장 데이터베이스인 SQLite로 대체되어 매우 가볍게 동작합니다. 그래서 k3s는 사물인터넷(IoT) 용도 혹은 라즈베리파이 같은 학습용 초소형 컴퓨터에도 사용할 수 있다는 장점이 있습니다.

k3s Server
  • Process
  • SQLite ← API Server ← Tunnel Proxy ← Tunnel Proxy ← Kube Proxy ← Flannel
  • Scheduler / Controller Manager → API Server
k3s Agent
  • Process
  • SQLite ← API Server ← Tunnel Proxy ← Tunnel Proxy ← Kube Proxy ← Flannel
  • Tunnel Proxy / Flannel ← Kubelet → Containerd → Pod/Pod/Pod
k3s의 구조 (https://k3s.io)

물론 높은 쿠버네티스 호환성을 제공하기 때문에 단순 학습 용도를 넘어 소규모의 운영 환경에도 적용할 수 있습니다. 그렇지만 대부분의 구성 요소가 매우 단순화되어 있어 높은 성능과 안정성을 요구하는 시스템에는 부적합할 수 있습니다.

k3s에 대해서도 요약하자면 아래와 같습니다.
- 용도 : 쿠버네티스와 완전히 호환되는 가벼운 배포판
- 장점 : 설치가 쉽고 시스템 리소스를 적게 사용하면서 높은 쿠버네티스 호환성을 보장함
- 단점 : 구조가 매우 단순하므로 높은 성능과 안정성을 요구하는 시스템에는 부적합할 수 있음

조금 더 대규모 환경에 적합한 쿠버네티스 구성 방법을 찾는다면 '랜처(Rancher)'가 있습니다. 랜처는 k3s와 마찬가지로 Rancher Labs에서 만들었는데요. 대규모 클러스터 및 기업용 환경에도 적합한 쿠버네티스 관리 플랫폼입니다. 랜처는 무료로 사용할 수 있는 오픈소스 버전과 더불어 기술 지원을 받을 수 있는 상용 버전을 함께 제공하고 있습니다.

랜처의 가장 큰 장점을 꼽자면, 쿠버네티스 클러스터뿐 아니라 운영에 필요한 모니터링, 보안 관련 기능을 쉽게 설치할 수 있다는 점입니다. 또한 추가적인 기능이 필요할 때, 사용자가 설정 방법을 고민할 필요 없이 랜처가 제공하는 마켓 플레이스에서 앱을 내려받는 것처럼 쿠버네티스 관련 도구를 설치하고 구성할 수 있습니다. 또한 랜처의 관리 도구를 사용해서 새로운 쿠버네티스 클러스터를 쉽게 생성하고 여러 클러스터를 한곳에서 관리할 수 있습니다. 이때 퍼블릭 클라우드(AWS, Azure, GCP 등)와 프라이빗 클라우드를 가리지 않고 설치할 수 있기 때문에 클라우드에 대한 전문지식이 부족해도 여러 클라우드를 동시에 활용하는 멀티 클라우드 환경을 구성할 수 있습니다.

DevOps Teams → Container Management → IT Admins DevOps Teams
  • Team 1
  • Team 2
  • Team N
Container Management
    RANCHER
  • GKE(Google Cloud Platform) - Prod, Staging, Dev
  • EKS (Amazon web services) - Prod, Staging, Dev
  • RKE (VMware vSphere) - Prod, Staging, Dev
IT Admins
  • Authentication
  • Security Policies
  • Access Control
  • Capacity and Cost
Rancher Overview (https://rancher.com)

다만 랜처는 대규모 시스템 관리까지 염두에 둔 플랫폼이므로 자체적인 구성 요소가 많이 포함되어 있으며 이로 인하여 다른 도구에 비해 조금 더 무거운 면이 있습니다. 실제로 현장에서 랜처를 모니터링 및 대시보드를 자동으로 구성해 주는 도구 정도로 접근하는 경우가 종종 있는데요. 중소 규모의 단일 클러스터는 이를 구성해 주는 다른 도구를 사용하고, 모니터링이나 대시보드를 쉽게 설정해 주는 추가 기능을 활용하는 것이 조금 더 효율적일 수도 있다는 사실을 기억해 주세요.

그럼 랜처의 특징도 한 번 요약해 보겠습니다.
- 용도 : 대규모 및 기업용 환경에서도 활용 가능한 다목적 쿠버네티스 관리 플랫폼
- 장점 : 기본적으로 포함되어 있는 기능이 많고 추가 도구 설치도 쉬움. 멀티 클라우드 관리 가능함
- 단점 : 다른 도구에 비해 무거우므로 시스템 환경에 따라 적절한 고려가 필요함

앞서 설명드린 미니쿠브, k3s, 랜처가 쿠버네티스의 전체적인 구성을 목적에 맞게 자동으로 설치해 주는 도구라면, 기본적인 상태의 쿠버네티스를 시스템상에 구성해 주는 도구도 있습니다. 그중 가장 널리 알려진 게 ‘kubeadm’인데요. 다른 쿠버네티스 구성 도구들은 설치 환경까지 구성해 주는 것과 달리, kubeadm은 사용자가 기본적인 쿠버네티스 클러스터 구성 이외에 운영에 필요한 서비스, 스토리지, 모니터링 등의 세부 구성 요소를 직접 설정해야 합니다. 그렇기 때문에 처음 쿠버네티스를 접하는 분들은 kubeadm을 통해서 쿠버네티스 환경을 구축하는 것이 조금 어려울 수 있습니다. 하지만 세부적인 설정을 할 수 있는 전문적인 사용자라면 자신의 환경에 맞는 쿠버네티스 클러스터를 설정할 수 있습니다.

물론 이러한 과정을 모두 생략하고 가장 쉽고 빠르게 쿠버네티스를 접하는 방법도 있습니다. 그것은 바로 퍼블릭 클라우드에서 제공하는 ‘매니지드 쿠버네티스 서비스’를 사용하는 것입니다. 사용자가 쿠버네티스를 설치하는 부담 없이 퍼블릭 클라우드 서비스에서 제공하는 콘솔의 지시사항을 따르는 것만으로도 쿠버네티스 클러스터를 생성할 수 있으며, 생성된 클러스터의 관리까지 퍼블릭 클라우드에서 해주기 때문에 사용자는 쿠버네티스 기능을 사용하는 데에만 집중할 수 있게 됩니다. 각 퍼블릭 클라우드 서비스들이 제공하는 매니지드 쿠버네티스 서비스는 AWS(EKS), Azure(AKS), GCP(GKE)와 같은 것들이 있습니다. 삼성SDS 또한 CNCF의 Certified Kubernetes 인증을 받은 Samsung Cloud Platform(SCP) Kubernetes Engine 서비스를 제공하고 있습니다.

삼성SDS Managed ↔ Customer Managed 삼성SDS Managed
    Control Plane
  • API Server, etcd ↔ Scheduler → Controller Manager
    Customer Managed
  • Node (VM) / Node : Kubelet, Container Runtime, Kube-Proxy, Containers
삼성SDS SCP Kubernetes Engine

마지막으로 쉬운 방법보다는 쿠버네티스를 구석구석 살펴보면서 공부하고 싶은 분들을 위해 한 가지 방법을 더 소개해 드리면서 이번 글을 마치겠습니다.

‘Kubernetes the hard way’(https://github.com/kelseyhightower/kubernetes-the-hard-way) 문서에서는 쿠버네티스 클러스터를 구성하기 위해 필요한 모든 구성 요소를 단계별로 직접 설정하는 방법을 가이드 해주고 있습니다. 물론 실제 운영 환경에서 사용할 쿠버네티스 클러스터는 앞서 설명드린 각종 도구나 매니지드 쿠버네티스 서비스를 사용하는 것을 적극 추천드립니다. 다만, 조금 더 전문적인 쿠버네티스 운영자가 되기 위해서는 쿠버네티스의 구성 요소와 세부적인 설정을 이해하는 것이 필요할 수도 있습니다. 예를 들어 쿠버네티스 내부 통신을 위해 사용하는 각종 인증서, 쿠버네티스의 정보를 저장하는 ETCD, 쿠버네티스의 내부 네트워크와 DNS 설정 등은 실제 운영 중 문제가 생기면 서비스에 중대한 장애를 일으킬 수도 있는 요소입니다. 위의 가이드를 실습해 보시면 쿠버네티스의 전체적인 구성을 이해할 수 있어, 쿠버네티스 지식을 한 단계 도약시키는 데 도움이 될 것입니다.

이번 글에서는 용도과 환경별로 쿠버네티스를 설치하는 데 사용할 수 있는 각종 도구와 방법을 알아보았습니다. 다음 시간에는 쿠버네티스 구성 요소와 역할에 대해서 알아보겠습니다.


출처: 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 (조훈, 심근우, 문성주 저)

+ '컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커' 도서를 공저한 심근우 프로 인터뷰
+ 쿠버네티스 알아보기 1편: 쿠버네티스와 컨테이너, 도커에 대한 기본 개념

삼성SDS 소셜 크리에이터 심근우 프로

이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe