본문으로 바로가기

쿠버네티스란 ?

category Kubernetes 2021. 6. 3. 00:42
반응형

쿠버네티스는 대표적으로 컨테이너들을 오케스트레이션 해주는 대표적인 도구이다. 컨테이너를 오케스트레이션 해주는

것들에는 도커스웜 등등이 있지만 가장 표준적으로는 쿠버네티스가 쓰인다.

 

쿠버네티스는 도커와 같은 컨테이너를 구축하는 시스템으로 여러개의 컨테이너들을 관리하기 쉽게 해주고, 하나로 이어주어 보다 안정적이고 유동성을 이루게 해주는 외부의 관리 프로그램이라 보면 된다.

 

쿠버네티스는 yaml 형식의 설정 파일이 있고. 이 파일로 컨테이너를 실행시키고, 상태를 살피고 , 미리 설정된 상태와 다른 오브젝트에 대해 처리하는 등 관리 역할을 실행한다.

 

쿠버네티스의 Object 

-Pod 

쿠버네티스가 가질 수 있는 최소 단위이며, 하나의 Pod는 여러개의 Container로 이루어져 있다.

각 컨테이너가 공유하는 네트워크 환경이나, 볼륨 공간이 마련 돼 있다.

 

-ReplicaSet 

Pod이 쿠버네티스의 최소 단위라면, 하나의 Pod을 만들었을 때 그 Pod에 대해 무결성을 위하여 미리 몇개를 복제 해둔다. 기존 Pod을 n개 복제했으면, Replica = n 인 셈.

 

쿠버네티스의 아키텍쳐는 'Pod' 단위로 명령을 실행한다. (Docker는 각각의 컨테이너에 직접 명령어 실행)

컨테이너 자체에 명령을 내린다기 보다, 컨테이너를 Pod 단위로 묶어 조작하는 ,kublet이라는 것에게 일을 위임하는 형태이다.

즉, 사용자가 원하는 서비스를 구축하고 싶으면, kublet에게 a컨테이너와 b컨테이너를 -- 하는 상태로 Pod 단위로 묶어서 실행 시켜줘 라고 명령을 위임 한다.

kublet과 Pod 들을 한대 묶은 단위를 Node라고 부른다.

하나의 Node 에서 하나의 Kublet에게 Pod의 조작을 의뢰한다.

 

전체적인 동작 구조는 사용자는 kubectl과 같은 것으로 명령을 내리고, 해당 명령을 Master라고 하는 곳의 API Server가 받아 들인 후, 해당 노드의 kublet이 그것을 실행한다.

 

(Pod의 특징)

- 쿠버네티스는 배포를 컨테이너 단위로 하지 않고 Pod 단위로 한다.

 

- Pod 내의 컨테이너는 IP와 Port를 공유한다. 두 개의 컨테이너가 하나의 Pod를 통해서 배포되었을때, localhost를 통해서 통신이 가능합니다.예를 들어 컨테이너 A가 8080, 컨테이너 B가 7001로 배포가 되었을 때, B에서 A를 호출할때는 localhost:8080 으로 호출하면 되고, 반대로 A에서 B를 호출할때에넌 localhost:7001로 호출하면 된다.

 

- Pod 내에 배포된 컨테이너간에는 디스크 볼륨을 공유할 수 있다. 근래 애플리케이션들은 실행할때 애플리케이션만 올라가는것이 아니라 Reverse proxy, 로그 수집기등 다양한 주변 솔루션이 같이 배포 되는 경우가 많고, 특히 로그 수집기의 경우에는 애플리케이션 로그 파일을 읽어서 수집한다 . 애플리케이션 (Tomcat, node.js)와 로그 수집기를 다른 컨테이너로 배포할 경우, 일반적인 경우에는 컨테이너에 의해서 파일 시스템이 분리되기 때문에, 로그 수집기가 애플리케이션이 배포된 컨테이너의 로그파일을 읽는 것이 불가능 하지만, 쿠버네티스의 경우 하나의 Pod 내에서는 컨테이너들끼리 볼륨을 공유할 수 있기 때문에 다른 컨테이너의 파일을 읽어올 수 있습니다.

 

- 즉, Pod은, 동일 Volume, 동일 네트워크를 공유하는 컨테이너들의 집합이라 할수 있다.

반응형