오늘의 공부 👍
오늘은 Kubernetes에 대해서 알아보겠습니다.
📝 Kubernetes
- 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구이다.
- 쿠버네티스와 동일한 기능을 하는 도구에는 메소스(Mesos), 도커 스웜(Docker Swarm) 등 이 있다.
- 이런 도구를 컨테이너 오케스트레이션 도구라고 한다.
- 많은 수의 컨테이너를 협조적으로 연동시키기 위한 통합 시스템이며 이 컨테이너를 다루기 위한 API 및 명령행 도구 등이 함께 제공된다.
▷ Kubernetes Cluster
- Kubernetes의 여러 리소스를 관리하기 위한 집합체를 말한다.
- 리소스 중에서 가장 큰 개념은 노드(node)이다.
- 노드(node)는 클러스터(cluster)의 관리 대상으로 등록된 도커 호스트로, 도커 컨테이너가 배치되는 대상이다.
▶ Master Node
- Kubernetes Cluster 전체를 컨트롤하는 역할로 API 서버,스케줄러,컨트롤러 매니저, etcd 로 구성된다.
- api서버 = 본사 전산직
- etcd = 정보를 수집하는 직원
- 스케줄러 = 공장의 업무를 담당해주는 직원
- 컨트롤러 매니저 = 업무를 구체화 시켜주는 직원
▶ Worker Node
- Master Node에 의해 주어진 명령어를 받고 실제 워크로드에 생성하여 서비스하는 컴포넌트다.
- Kubelet, kube-proxy, cAdvisor 와 컨테이너 런타임으로 구성된다.
- kubelet = 공장 전산직
- kube-proxy = 공장 직원에 업무를 명령을 일하는 직원에게 전송 직원
- container runtime= 공장기계 또는 일하는 직원
- cAdisor = 공장에 기계가 잘 돌아가는 지 확인하는 직원
▶ Pod
-
컨테이너가 모인 집합체의 단위로, 적어도 하나 이상의 컨테이너로 이루어진다.
-
쿠버네티스(Kubernetes)에서는 결합이 강한 컨테이너를 파드로 묶어 일괄 배포한다.
-
한 팟 안의 컨테이너는 모두 같은 노드에 배치된다.
-
팟 하나가 여러 노드에 걸쳐 배치될 수는 없다.
▷ Kubernetes VS Load Balancer
▶ Load balncer
- 부하를 모니터링해 부화를 분산하는 일을 하게 된다.
- 가상 컴퓨터(instance) 위에서 docker container가 실행되는데, 인스터스가 실행되는 속도가 느려서 부화를 분산할때 속도면에서 느리다.
▶ Kubernetes
- 여러 가지 일을 할 수 있지만 부화 모니터링을 통한 부화 분산 역할도 진행할 수 있다.
- 같은 역할을 하는 Load balancer 와 Kubernetes 차이점은 실행 환경이다.
- cluster라는 큰 컴퓨터 안에서 docker container가 실행되기 때문에 따로 가상 컴퓨터(instance)를 실행하지 않아도 분산 부화를 할 수 있다.
- 속도 면에서 Load balncer 보다 비교적 빠르다.
📝 Kubernetes Network
- 노드박스 하나가 컴퓨터 한대라고 보면 된다.
- 노드박스 하나에 파드 여러개가 들어가 있다.
- 부하분산기 => 외부 IP
- 노드포트 => 컴퓨터IP
- 클러스터 IP => 내부 IP
마무리 👍
출처 및 참고
코드캠프