쿠버네티스 시작하기 – 0 (왜 써야함?)

  • Post category:기술

쿠버네티스 인기가 많다.
요즘이 아니라 꽤 됐다. 내가 처음 들었던건 2017년 말인데, 같은 팀에서 일하던 황대리가 이제 쿠버네티스가 대세가 될거라고 했던 것이 생각난다.

물론 그땐 이름만 들어봤지 뭐하는 놈인지도 몰랐고, 내가 2024년 8월에 그걸 쓰기 위해 공부하며 구축하게 될거라곤 생각도 못했다.

쿠버네티스 왜 써야함?

뭔가를 배우거나 써먹을 때 제일 중요한 질문이라고 생각한다.
내가 이걸 왜 써야함?

회사를 다니며 느낀 것이 누군가를 설득할 때 꼭 필요한건 명분이다.

쿠버네티스 써야할 명분이 없다아입니까

포트폴리오로 이용할라고

솔직히 이게 가장 큰 이유다.
이제 여기저기서 쿠버네티스를 쓰는 곳은 늘어나는데, 아직 업무에선 쓸 기회도 없었으니 이참에 공부도 할겸, 포트폴리오도 만들 수 있다니 뭐 쓰지 않을 이유가 있나?

자원이 부족해서

난 용돈을 받아서 쓰는 평범한 유부남인걸? 중국산 미니PC 3대, 라즈베리파이 1대를 구매하는데도 꽤나 눈치를 봤다. 기껏 가용한 자원은 16 코어 56GB 메모리. 이정도 서버로는 내가 원하는 생태계를 구축할 수 없다.
그럼 어쩌나. 적은 자원으로 최대한 뽑아먹어야지.

자주 신경쓰고 싶지 않다

한번 구축하면 오래오래 문제 없는 서비스가 좋다. 누구나 그렇겠지만.
앞으로도 개발해야 할 것은 너무 많아서 상황에 따라 이 시스템을 계속 봐줄 수 없고 나 대신 신경써주는 친구가 있었으면 좋겠다. 그 친구가 오케스트레이션을 해준다는 쿠버네티스가 아닐까?

생소한 쿠버네티스 용어

실무에서 사용되는 규모가 있는 기술엔 그것만이 가진 생태계와 특징이 있다.
쿠버네티스는 각 분야의 서비스를 컨테이너로 관리, 제공하기 위한 플랫폼이다보니 비교적 크고 복잡하다.

물론 용어를 모른다고 개발이나 구축을 못할 것은 없다.
희한하게 지내다보니 용어를 잘 아는 사람이 명분도 잘 만들고 사람들을 설득하는 기술이 뛰어나다는 것을 느꼈다.
20대 중반 개발을 시작한지 얼마 되지 않았을 무렵엔 그까짓 용어를 정확하게 아는 것이 뭐가 중요한가 뜻만 알고 다룰줄 알면 되지 생각했는데 현실은 조금 다르더라. 물론 나는 기억력이 좋지 않기 때문에 용어를 잘 못외운다. 그러니 열심히 기록을 해둬야지.

시작하기 전에 최소한의 용어와 개념을 알고 가는 것이 좋다.

Container (컨테이너)

도커를 사용해본 사람은 충분히 익숙한 그 컨테이너. 쿠버네티스 생태계에서 하나의 어플리케이션 단위로 보면 된다.

Pod (파드)

컨테이너를 관리하는 가장 작은 단위로 파드 내엔 여러개의 컨테이너가 있을 수 있다. 가령 워드프레스 같은 것은 워드프레스 웹 어플리케이션(PHP) 웹 서버(Nginx, Apache) 컨테이너 MySQL 컨테이너를 1개의 Pod로 묶어서 제공할 수 있다.
파드 내에 하나의 컨테이너만 있는 것을 single-container pod, 여러개 컨테이너가 있으면 multiple-container pod 라고 부른다.

Node (노드)

어플리케이션을 실행하는 서버. 내가 집에서 On-premise로 구축하는 경우엔 미니 PC 1대가 1개의 Node가 되는거고, 클라우드 환경에서 구축하는 경우엔 인스턴스 1대가 1개의 노드가 된다. 컨테이너, 파드는 논리적인 추상화된 개념이라 실체가 없다. 하지만 경우에 따라 노드는 실체가 있는 것이라 좀 더 이해하기 쉬울 것.

노드에겐 2가지 직업이 부여되는데 하나는 Master, 하나는 Worker 이다. 이름만 봐도 느낌이 오듯 마스터는 부리고 워커는 부려진다. (마치 회사와 나의 관계와 같이..)
마스터 노드는 클러스터를 제어, 관리(오케스트레이션)한다. Control Plane(컨트롤 플레인)이라는 개념적인 기능 집합체를 포함한 서버라고 생각하면 된다.
워커 노드는 어플리케이션을 실행한다. 이녀석도 마찬가지로 Data Plane(데이터 플레인)이라는 개념적인 어플리케이션 작업(실행, 데이터 처리, 요청 처리, ..)의 집합체를 포함한 서버라고 생각하면 된다.

실체가 있는 놈이라 개념적인 친구들을 많이 아우른다. 좀 더 자세한 내용을 다룰까 했지만 이게 또 너무 길어지면 보기가 싫어진다. 나중에 세부 개념 포스팅을 따로 하던 해야겠다.

Cluster (클러스터)

1개 이상의 노드를 묶어서 관리하기 위한 단위. 단일 노드 클러스터도 구축이 가능하지만 당연히 권장은 하지 않는다. 단일 노드 클러스터 상용 서비스를 제공하느니 쿠버네티스를 사용하지 않는 것이 낫다. 굳이..

클러스터를 구성하는 것은 마스터 노드, 워커 노드, 클러스터 네트워크 정도 된다.

쓰다보니 정말 기본 개념과 용어만 정리하는데도 너무 괴롭다.
글이 길어지면 보다가도 탈주하니 더 자세한 내용이 필요한 것에 대해선 별도의 포스팅을 작성해야겠다.

근데 다 작성하고 보니 AWS에 쿠버네티스에 대해 너무 잘 정리된 문서가 개많다.

AWS가 말하는 쿠버네티스 노드란


특히 컨트롤 플레인과 데이터 플레인 아키텍쳐를 이미지로 간략하게 표현해놔서 너무 좋다.
이해력이 딸리는 나는 이미지가 참 좋다. 앞으론 이미지를 잘 활용해보겠음.

답글 남기기