당신이 모를 수도 있는 쿠버네티스의 5가지 속성

학습 차원에서 틈틈이 해외 전문가들이 블로그나 미디어 그리고 책에서 쓴 글을 정리하고 있습니다. 이번 포스팅도 그중 하나고요. 거칠고 오역된 부분이 있을 수 있습니다. 제대로 번역되지 않은 부분은 확인 주시면 반영토록 하겠습니다. 이번 글은 미디엄에 공유된 IOD 전문가 라페일 도 베일이 쿠버네티스의 몇가지 특징에 대해 요약한 것을 정리한 것입니다.

쿠버네티스 검색이 몇 년간 계속해서 증가하고 있다. 점점 더 많은 사람들이 정확하게 쿠버네티스가 무엇인지, 더 좋은 점은 그들이 어떻게 이 기술이 주는 이점을 활용할지를 이해하려고 시도하고 있다.

그래서 쿠버네티스란?

간단히 말해 쿠버네티스는 컨테이너 오케스트레이션 플랫폼이다. 다양한 워크로드를 대단한 유연성을 갖고 다양한 환경에서, 돌릴 수 있다. 쿠버네티스는 운영자가 최소 그리고 최대치 머신 수를 각각의 애플리케이션용으로 설정하고 어떻게 앱이 업그레이되어야 하는지 설정할 수 있게 해준다.  이것은 제로 다운타임과 빠른 리커버리를 갖고 쉬운 배포를 가능케한다.

그러나 이거 말고도 쿠버네티스는 깃허브에서 가장 가장 인기 있는 오픈소스 프로젝트 중 하나일 뿐만 아니라, 당신이 알지 못하는 숨겨진 놀라움들로 가득 차 있다.

그것들 중 일부에 대해 해부해 보자.

1. 쿠버네티스는 개발용 싱글 머신에서 사용될 수 있다.

나는 쿠버네티스가 대단히 복잡하다는 것을 안다. 그리고 대부분의 사람들이, 그것을 시작하는 것 조차 두려워한다는 것을 안다. 쿠버네티스는 2,000개 이상의 약속(commits)들을 갖고 있고 3개월에 한 번씩 새 버전이 나온다. 더구나 쿠버네티스는 전 세계 몇몇 대기업들에서 돌아가고 있다.

이 모든 것에도 불구하고, 쿠버네티스는 실제로 로컬 머신에서 미니큐브(minikube)로 불리는 툴로 쿠버네티스를 시작하는 것은 꽤 쉽다. 미니큐브는 간소화된 쿠버네티스 버전으로 개발자들을 위해 디자인됐다. 미니큐브는 기본적인 로드 밸런서 구현체, 영구 볼륨(Persistent Volumes),  엔비디아 GPU 지원도 함께 제공한다.

미니큐브는 윈도8 이상을 지원하고, 버추얼박스 또는 하이퍼V와 함께 돌릴 수 있다. 보다 간단한 설치 과정을 위해 윈도 인스톨러용 도커를 사용한다. 리눅스나 맥OS 용으로도 이용할 수 있는 설치 패키지들이 있다.

2. 서버리스를 쿠버네티스에서 돌릴 수 있고 벤더 종속을 잊을 수 있다.

벤더에 종속되는 것을 걱정하지 않고 가능한 개발을 빠르게 유지하는 것이 가능한가? 매니지드 서비스를 이용한다고 해서 반드시 좋지 않은 결과를 맞이하는 것은 아니다.

당신은 데이터베이스와 메시지 브로커(message broker)를 통제할 의지가 있는가? 미래 가능한 문제를 피하려면 좋은 백업과 업그레이드 정책을 가져야 한다는 것을 기억하라. 그러나 당신은 벤더에 종속되지 않는다.

쿠버네티스는 클라우드 운영체제로 보일 수 있다. 쿠버네티스는 당신이 어떤 클라우드를 사용하든 클라우드 자원을 같은 구조화된 방식으로 할당한다. VM이 필요한가? 당신의 클러스터가 보다 많은 자원을 필요로 한다면 쿠버네티스는 하나 만들 것이다. 수평적으로 애플리케이션을 확장할 필요가 있는가?

쿠버네티스는 깊숙하게 당신의 클라우드 제공 업체와 통합해 이 서비스를 위한 로드밸런서를 만들 것이다. 즉, 클라우드 공급자가 제공하는 모든 편의성을 다른 많은 클라우드 공급자와 함께 작동하는 균일한 플랫폼으로 마이그레이션할 수 있다.

데이터베이스나 메시지 브로커 같은 매니지드 서비스는 클라우드 제공 업체들이 당신이 다른 제공 업체들과는 호환되지 않는 그들의 배타적이고 독점적인 서비스를 쉽게 사용하도록 하는 시도다.

또 다른 트렌드 사례는 서버리스다. 모든 메이저 클라우드 업체는 자사 솔루션을 제공한다. AWS, G클라우드, 애저는 각기 다른 기술 스택과 패러다임을 갖고 있다.

일단 당신이 하나를 선택하면, 당신은 코드에서 많은 부분을 바꾸지 않고 또 다른 것으로 바꾸기 어렵다. 그렇기는 하지만 서버리스 콘셉트를 쿠버네티스에서 배치할 수 있게 해주는 쿠버리스(Kubeless) 같은 오픈소스 솔루션들이 있다. 쿠버리스는 오픈소스 환경에서 서버리스를 제공하기 위해 몇몇 쿠버네티스 기능들을 사용한다. 오토스케일, 모니터링, 디버깅 역량들이다. 쿠버리스는 또 많은 다양한 기술 스택들에서 돌아간다. 그러나 네이티브 서버리스 솔루션은 여전히 개발하기 쉽게 해주는 다른 벤더들의 클라우드 서비스들에 잘 통합돼 있다.

3. 당신은 쿠버네티스에서 하이브리드 환경을 설정할 수 있다.

하이브리드 환경은 컴퓨팅 자원이 같은 클러스터를 공유하는 클라우드와 코로케이션 자원들로 나눠진다. 우선 일반적으로 이것은 2가지 큰 혜택을 제공한다. 당신은 피크 워크로드(peak workloads)용으로 보다 많은 리소스를 가질 수 있다. 다음 혜택은 현재 회사 컴퓨팅 자원들을 사용함으로써 클라우드 마이그레이션을 쉽게 한다.

현재 알파 단계인 쿠버네티스 클러스터 페더레이션( Kubernetes Cluster Federation, KubeFed: 쿠버페드)는 이같은 환경을 위한 쿠버네티스 솔루션이다. 이것은 쿠버네티스 연합들이 함께 돌아가는 것을 가능케 한다. 각각의 쿠버네티스는 한 위치에 배치되고, 이 모든 것을 조정하는 중앙 위치한 것과 커뮤니케이션한다. 이 모든 것을 조정한다. 이 때 상용자들은 중앙화된 API를 가질 수 있다.

단지 이것을 이용할 수 있다는 것이 이것이 쉽다는 것을 의미하는 것은 아니다. 첫째 이것은 쿠버네티스 인스턴스를 당신의 온프레미스 데이터센터에서 요구한다. 그때 당신은 쿠버페드를 둘다 클러스터에서 설정할 필요가 있다. 쿠버네티스 인스턴스를 유지하는 것은 쉬운 일이 아니다. 가능한 생산 중단을 피하기 위해 전문가들에게 의해 유지되어야 한다. 고급 네트워킹 및 유닉스 시스템 기술이 필요한 수십 개 서비스가 실행되고 있다.

쿠버페드는 또한 멀티 클라우드 환경을 배치하는데도 사용될 수 있다. 이것은 당신이 쿠버네티스 인스턴스를 유지할 필요가 없기 때문에 당신의 생활을 보다 쉽게 해줄 수 있다. 그러나 당신의 인프라 분류에 따라 가능한 대역폭 트래픽 비용을 염두에 두어야 한다.

4. 당신은 스테이트풀 애플리케이션들을 위한 영구 볼륨을 설정할 수 있다.

우리는 애플리케이션 대부분을 두 개 카테고리 중 하나로 분류할 수 있다. 스테이트리스(stateless)와 스테이트풀(stateful)이다. 스테이트리스 애플리케이션들은 민감한 정보를 잃지 않고 항상 종료될 수 있다. 웹애플리케이션이나 최적화 알고리즘들이 예다.

반면 스테이트풀 애플리케이션들은 데이터베이스나 메시지 브로커처럼 데이터를 저장하기 위한 영구적인 스토리지를 필요로 한다.

스테이트리스 애플리케이션들은 수평적으로 확장하기 쉽다. 같은 소프트웨어에서 인스턴스 수를 늘리는 것이다. 당신은 인스턴스를 켜고 끄기 쉽다. 저장된 정보에 대해 걱정할 필요가 없다. 그러나 스테이트풀은 데이터 손실을 피하기 위해 특별한 케어를 필요로 한다. 스토리지에 의존하는 수평적으로 확장된 소프트웨어는 해당 소프트웨어에 특화돼 있다. 일부 데이터베이스는 가장 비싼 옵션으로 이것을 지원한다. 마이크로소프트 SQL 서버, 오라클 데이터베이스다. 오픈소스 소프트웨어는 설정과 어려운 작업과 함께 이 옵션을 갖고 있을 수 있다. 포스트그레 SQL과 레디스다.

영구 볼륨은  애플리케이션에서 영구성을 다루는 쿠버네티스 솔루션이다. 볼륨은 두가지 타입이 있다. 스태틱(static)과 다이내믹(dynamic)이다.

스태틱 볼륨은 애플리케이션 앞에서 만들어지고 관리하기 어렵다. 운영자가 애플리케이션을 만들기 전에 필요한 것을 알아야 하기 때문이다. 다이내믹 볼륨에서 클러스터는 자원을 필요할 때 할당한다.

대부분의 케이스들에서 다이내믹 볼륨이 사용되고 있지만 스태틱 볼륨은 애플리케이션이 관계형 데이터베이스 같은 것을 필요로 하는 특정 IO를 갖고 있을 때 사용될 수 있다.

영구 볼륨은 물리적이고, 존재하는 인프라를 사용한다. 따라서 이것은 이용할 수 있는 제공업체들에 의존한다. 각각의 클라우드 제공업체는 최소한 영구용으로 하나의 솔루션을 갖고 있다. 그러나  서드파티 솔루션들도 나와 있다.

5. 윈도 컨테이너들을 위한 윈도 노드로 작업할 수 있다

윈도서버2016에서 소개된 윈도 컨테이너들은 이제 윈도10으로 개발하는데도 이용된다. 윈도 컨테이너들은 리눅스 컨테이너들 같다. 그러나 윈도 애플리케이션들을 돌릴 수 있다. 레거시 애플리케이션도 돌릴 수 있다. 윈도 컨테이너들은 네임스페이스들과 커널 쉐어링, 아니면 하이퍼V에 의존하는 보다 안전한 워크로드를 사용해 리눅스처럼 작동한다.

쿠버네티스는 지난 3월 출시된 쿠버네티스 1.14 이후 윈도 컨테이너들을 지원하고 있다. 당신은 새로운 노드 풀을 만들기 위해 어떤 저장도 설정할 필요가 없다. 일부 통고들이 있지만 하이퍼V 격리(isolation)는 이용할 수 없다. 특권이 있는 컨테이너들은 없다.  당신은 파일(단지 볼륨) 및 다른 것들을 시작할 수 없다.

쿠버네티스는 크다. 여전히 많은 비밀들을 갖고 있다. 오픈소스 프로젝트로서 누구나 새롭게 가끔은 알려지지 않은 기능들을 추가할 수 있다. 당신의 특별한 요구사항에 도움이 되는 많은 다른 쿠버네티스 요소들이 있다. 쿠버네티스를 수용하기 위한 시간을 좀 더 가져라. 그것을 머신에 설치하고 만져보라.

테크잇 뉴스레터를 전해드립니다!

오피니언 기반 테크 블로그 'TechIt'
테크 비즈니스를 보는 다양한 통찰들을 이메일로 간편하게 받아 볼 수 있습니다.

About the author

endgame
endgame

테크 블로거 / 공유할만한 글로벌 테크 소식들 틈틈히 전달하겠습니다

No more pages to load


TechIT

테크 비즈니스를 보는 다양한 통찰 '테크잇'

독자 여러분들께서 좋은 의견이나 문의 사항이 있으시면 아래 양식에 따라 문의 주시기 바랍니다.

Contact