[Kubernetes] Kubernetes 소개
<Kubernetes 소개>
안녕하세요.
개발자 김모씨입니다.
최근 IT 업계의 가장 큰 화두는 '클라우드'라고 해도 과언이 아닙니다.
기존 사용자의 모바일에서 돌아가던 게임을 클라우드에서 운영하고 사용자는 이를 스트리밍해서 즐긴다거나,
내부 서버로 돌리던 서비스를 클라우드(AWS, GCP 등) 환경으로 전환하려는 시도들이
많이 일어나고 있죠.
바야흐로 '대(大)클라우드 시대'(대항해시대)라고 해도 과언이 아니죠.
오늘 이야기하려는 Kubernetes는 이 클라우드의 거대한 흐름에서
중심축이 되고 있는 기술입니다.(like 태풍의 눈)
그래서 오늘은 Kubernetes(짧게 말해 k8s)란 무엇인지에 대해 적어보려 합니다.
앞으로 Kubernetes에 대해서 쭉쭉 적어볼 생각이니 함께하자구요!
쿠버네티스란?
쿠버네티스를 공부하면서 이제서야 어렴풋이 크게 와닿는 쿠버네티스의 소개글이 있는데요.
바로 위키백과의 글입니다.
"
쿠버네티스(Kubernetes, 쿠베르네테스, "K8s")는 디플로이 자동화, 스케일링, 컨테이너화된 애플리케이션의 관리를 위한 오픈 소스 시스템으로서 원래 구글에 의해 설계되었고 현재 리눅스 재단에 의해 관리되고 있다.
목적은 여러 클러스터의 호스트 간에 애플리케이션 컨테이너의 배치, 스케일링, 운영을 자동화하기 위한 플랫폼을 제공하기 위함이다.
도커를 포함하여 일련의 컨테이너 도구들과 함께 동작한다.
"
짧은 세 문장의 글이죠.
그렇지만, 이보다 더 쿠버네티스의 기능을 쉽고 핵심만 잘 설명한 글이 없다고 생각해요.
정리해보자면,
쿠버네티스는 DevOps의 전반적인 기능 수행을 위해 도커, rkt, Hyper container 등의 컨테이너를 관리해주는 플랫폼이라고 할 수 있습니다.
왜 쿠버네티스를 사용하는가?
더 쉽게 가보죠.
우리는 대부분 Docker라는 컨테이너 플랫폼을 사용합니다.
소프트웨어를 컨테이너안에 패키징해서,
어플리케이션 운영을 표준화하고, 어디서나 안정적으로 실행할 수 있도록 하는 거죠.
(Docker와 관련해서는 다른 글로 다시 설명할 예정입니다.)
일반적인 단일 노드에서 도커 컨테이너를 운영한다고 하면, 도커로도 충분할 겁니다.
하지만, 서비스 운영을 위해 많은 노드에서 해당 도커 컨테이너를 실행하려고 한다라고 하면 어떻게 될까요?
노드 간의 자원 사용량 등이 실시간의로 공유되어야 할 것임은 물론이고,
사용자의 요청을 적절한 노드로 분산해주는(Load Balancing) 작업이 필요하겠죠.
그 외에도, 해당 도커 컨테이너가 죽으면 재실행해주어야 하는 등의 작업도 필요하겠죠.
DevOps 엔지니어 또는 클라우드 엔지니어가 이를 수동으로 직접 해주려면,
손이 100개 여도 모자를 겁니다. 거의 미쳐가겠죠......
그래서 등장한 것이 바로 Kubernetes 같은 플랫폼이자 오케스트레이션 도구입니다.
물론 도커 스웜이라는 도커에 내장된 오케스트레이션 도구가 있긴 하지만,
사용법은 간단해도,
제한된 기능만을 제공한다거나
내결함성(Fault-tolerance)가 제한되어 있다거나
서비스를 수동으로 확장해야 한다거나
등의 단점이 너무나 명확하죠.
그래서 우리는,
쿠버네티스라는 거대하면서도 진입 장벽이 매우 높은.....
오픈소스를 사용해서
오케스트레이션을 하고 있는 겁니다.
자, 오늘은 이렇게
쿠버네티스란 무엇인가에 대해
가벼운 글을 적어보았습니다.
아. 번외로,
Kubernetes는 그리스어에서 어원이 왔다고 하는데요. '키잡이'라는 뜻이라고 합니다.
왜 쿠버네티스의 마크가 배의 키인지 이제 알았네요 ㅎㅎ
그럼 오늘은, 여기까지!
구독과 댓글은 개발자김모씨에게 큰 힘이 됩니다.
감사합니당당당