호돌찌의 AI 연구소
article thumbnail

Docker로 생성한 많은 container들을 관리하는 Kubernetes에 대해 이야기를 해보려 합니다. 이후에 작성될 글들은 쿠버네티스를 심도 있게 하나하나 구조를 뜯어보는 글을 다루는 것이 아님을 먼저 말씀드립니다. 그 이유는 일단 관리자 입장이 아닌 사용자 입장에서 다루는 게 목표이고, MLOps를 다루는 것이 목표이기 때문에 모든 구조를 다루기엔 분량이 상당히 많기 때문입니다.

 


1. Intro

Kubernetes를 감싼 public cloud(Amazon EKS, Google Kubernetes Engine, Azure Kubernetes Service)를 이용하면 안정된 서비스를 사용할 수 있습니다. 하지만 이 부분은 프리티어 계정이라 할 지라도 특정 기간이 지나면 유료로 전환이 될 것이며, 모르는 사이 비용 청구를 당할 수 있기도 합니다. 그렇다고 Kubernetes를 설치부터 하는 부분은 상당히 까다롭다고 알려져 있습니다. 그래서 처음 사용하는 사람들에게 진입 장벽이 될 수 있습니다.

따라서 minikube, MicroK8s, K3s와 같은 오픈소스들을 제공해줍니다. 이 블로그 글에서는 minikube에 대한 내용을 추후에 알려드릴 예정입니다. 

 

 

2. Concept - 선언형 인터페이스 & Desired State

쿠버네티스는 개발에 있어서 조금 다른 컨셉이 있습니다. 표로 정리하면 아래와 같습니다.

  명령형 인터페이스 선언형 인터페이스
간단 정의 A를 이렇게, 저렇게, 요렇게 해서 하나 만들어주세요 A가 하나 있었으면 좋겠어요(Desired State)
예시 에어컨의 냉매는 어떤것을 쓰고 얼마나 압축해서 기화해서... 어쩌구 저쩌구 내 방 희망온도는 20도가 되면 좋겠어

필자는 개발자가 아니기 때문에 자세히는 모르지만 명령형 프로그래밍은 무엇을 할지 세세하게 다 지정하는 느낌이 강합니다. C나 파스칼이라는 언어가 그 명령형 프로그래밍 언어의 대표 격이라는데 해본 적이 없기 때문에 정확히 감은 안 오지만 python, R, SQL을 하던 저에게는 전혀 모르는 세계라고 생각이 됩니다. 선언형 프로그래밍 언어는 HTML, SQL이 일반적으로 대표적인 예라고 합니다. 

 

 

 

 

 

 

3. Master Node & Worker Node

쿠버네티스의 컨셉은 마스터 노드와 워커 노드로 나누어집니다. 

https://kubernetes.io/ko/docs/concepts/overview/components/

마스터 노드는 점선으로 쳐져있는 control plane 부분입니다. 안에 API 서버, 클라우드 컨트롤러 매니저, 컨트롤러, etcd 등으로 구성되어있습니다. (이 부분이 각각 무엇을 하는지는 여기를 자세히 보시면 될 것 같습니다.) 간단하게 설명하면 여러 개의 워커 노드들을 관리 및 모니터링하면서 client로부터 요청을 받게 되고, 그 요청에 맞는 워커 노드들을 스케쥴링하여 해당 노드에 역할을 전달하는 역할을 하는 것이 쿠버네티스 클러스터의 Control plane component로 생각하고 계시면 될 것 같습니다. 

 

 

다음 글에서는 YAML이 무엇인지와 문법에 대해서 간단히 짚고 넘어가보겠습니다. 감사합니다. 

 

 

 

 

 

 

 

 


https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 


profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!