본문 바로가기
DevOps/Docker & K8s

쿠버네티스 아키텍쳐(2/2) (마스터노드/워커노드)

by 카프리썬 2020. 4. 19.
728x90

쿠버네티스 아키텍쳐
하나의 마스터노드여러대의 워커로드로 하나의 클러스터를 이루고 있는 구조

출처 https://twofootdog.tistory.com/7?category=845779

 

 

1. 마스터노드(Kubernetes Master) (aka.마스터)

쿠버네티스 클러스터 전체를 컨트롤 하는 시스템 

master는 API서버를 통해 K8S를 관리하고, 모든 컴포넌트들은 API 서버를 통해서 통신함 

출처 https://galid1.tistory.com/413?category=767345

관리자만 접속할 수 있돌고 보안설정 필요

마스터 서버가 죽으면 클러스터를 관리할 수 없기 때문에 3대를 구성해서 안전성 높임

 

다양한 모듈이 확장성을 고려하여 기능별로 쪼개져 있는 특징 

1.1 마스터노드 구성요소

  • API 서버
  • etcd
  • Scheduler
  • Controller Manager

출처 https://subicura.com/2019/05/19/kubernetes-basic-1.html

1) API 서버

쿠버네티스의 모든 기능들은 REST API로 제공하고, 그에 대한 명령을 처리하는 부분

K8S 내부의 모든 컴포넌트들이 서로 호출하기 위해 사용하는 컴포넌트

kubectl 요청뿐만 아니라 내부모듈의 요청처리, 권한체크,요청거부

노드에서 실행중인 컨테이너의 로그 확인하는 디버거 역할도 가능

2) etcd

쿠버네티스 클러스터의 데이터베이스 역할을 하는 서버 

클러스터의 모든 설정, '상태'데이터를 저장하는 부분 (object 를 key-value형태로 저장)

나머지는 다 stateless하게 동작하기 때문에 etcd만 잘 백업하면 언제든지 클러스터 복구가능, 

여러개로 분산해서 복제가능, 안전성 높음, 속도빠름

단순히 값을 저장하고 읽기 뿐만 아니라 watch 기능으로 상태변경 체크가능

오직 API 서버와 통신하고, 다른 모듈은 API서버를 거쳐서 etcd데이터에 접근함

 

3) 스케쥴러 (kube-scheduler)

pod,서비스 등 각 리소스들을 적절한 노드에 할당하는 역할

pod를 어떤 노드에서 실행할지 결정

node에 배치된 pod는 각 노드의 kubelet에 의해 컨테이너로 생성

 

4) 큐브 컨트롤러 매니저 (kube-controller-manager)

K8S의 ReplicaSet, Deployment 등 Contoller를 관리 및 적절한 노드에 할당하는 역할

각 컨트롤러에게 pod의 복제/배포 명령 수행 

 

5) 클라우드 컨트롤러 매니저 (cloud-controller-manager)
AWS,GCE,Azure 등 퍼블릭 클라우드와 연동 관리하는 역할

노드를 추가/삭제하고 로드밸런서를 연결하거나 볼륨을 붙일 있음

각 클라우드 업체의 인터페이스에 맞춰서 구현할 수 있음

 

6) DNS

내부 위치정보를 저장하는 dns서버

리소스 엔드포인트를 dns로 맵핑하고 관리

pod나 서비스들은 ip를 배정받지만, 동적으로 생성되는 리소스이기 때문에 ip가 변경되면 dns에 위치정보 저장

새로운 리소스가 생기면 그 리소스에 대한 ip와 dns이름 등록하고, dns 이름기반으로 리소스 접근

 

 

2. 워커노드 (Kubernetes Node) (aka. 노드)

마스터에 의해 명령을 받고 실제 워크 로드를 생성해서 서비스하는 컴포넌트

실제 컨테이너들이 생성 되는 가상머신 또는 물리적인 서버(여러개 생성해서 관리가능)

각각 서버에 라벨을 붙여서 사용목적을 정의 할 수 있음

API 서버의 요청을 Kubelet을 통해 수행

출처 https://galid1.tistory.com/413?category=767345

 

2.1 워커노드 구성요소

  • kubelet
  • Kube-proxy
  • pod
  • cAdvisor

출처 https://subicura.com/2019/05/19/kubernetes-basic-1.html

1) kubelet(큐블릿)

노드에 배포되는 agent

마스터의 API서버와 통신하는 역할

1. 마스터의 API서버로부터 수행할 명령을 받아서 워커노드를 수행시킴

2. 워커노드의 상태를 마스터로 전달시킴  

노드에 할당된 pod들의 생명주기 관리

pod를 생성하고, pod안의 컨테이너에 이상이 없는지 확인하면서 마스터와 통신

마스터의 명령을 수행하기 위한 쿠버네티스 에이전트

마스터 API서버와 통신을 하면서 노드가 해야할 명령어 받아서 수행시키기고, 노드의 상태를 마스터에게 전달

API 서버의 요청을 받아서 컨테이너의 로그전달하거나 특정명령 대신 수행하기도 함

 

2) kube-proxy

노드에 할당된 pod로 연결되는 네트워크 관리

노드로 오는 트래픽을 적절한 컨테니어로 프록시하고, 노드와 마스터간의 네트워크 통신관리

클러스터 내부에 별도의 가상네트워크가 동작할 수 있게 해주는 프로세스

TCP,UDP,SCTP 스트림을 포워딩하고, 여러개의 pod를 라운드로빈 형태로 묶어서 서비스제공

노드로 들어오는 트래픽을 적절한 컨테이너로 라우팅, 로드밸런싱, 프록시 하면서 통신관리

 

kube-proxy 자체가 프록시 서버로 동작해서 실제 요청을 받고, pod에게 전달하는 역할

시간이 지나면서 iptables를 설정하는 방식으로 변경

그런데 iptables에 등록된 규칙도 느려지면서 최근 IPVS지원

 

3) 컨테이너 런타임(Cotainer Runtime)

pod를 통해서 배포된 컨테이너를 실제로 실행시킴

컨테이너 런타임 중 대표적인 예로는 도커(Docker)

그외에  rkt, runc 같은 런타임도 지원

CRI (Container Runtime Interface)를 구현한 다양한 런타임지원 

 

4) 애드온(Addons)

클러스터 내부에서 필요한 기능을 실행시키 위한 pod

이 pod들은 deployment controller, replication controller에 의해 관리

4-1. 네트워킹 에드온

쿠버네티스를 직접 보유중인 서버들에 설치해서 사용한다면 에드온 별도설치 필요 

AWS,GCP 같은 클라우드 서비스에서 제공하는 쿠버네티스를 사용하면 에드온 설치 필요없음

CNI (Container Network Interface)를 구현하고 있으면 다른 애드온들도 사용가능

 4-2. DNS 에드온

실제로 클러스터 내에서 작동하는 DNS서버

쿠버네티스 서버들에게 DNS 레코드를 제공하는 역할

쿠버네티스 내부에서 실행된 컨테이너들은 자동으로 DNS서버에 등록됨

 

5) cAdviosr

노드의 모니터링 agent

노드에서 가동되는 컨테이너들의 상태정보를 수집해서 마스터의 API서버로 전달

 

3. 전체적인 쿠버네티스 아키텍쳐

https://phoenixnap.com/kb/understanding-kubernetes-architecture-diagrams

 

출처

https://galid1.tistory.com/413?category=767345

 

Kubernetes - 쿠버네티스(Kubernetes) 란? - 수정중(네임스페이스)

http://likefree.tistory.com/19 쿠버네티스와 마이그로서비스 아키텍쳐 - https://www.youtube.com/watch?v=xdqOxF2JqwU 쿠버네티스(Kubernetes)란? - 쿠버네티스를 이해하기 이전에 먼저 컨테이너 운영환경에 대..

galid1.tistory.com

https://subicura.com/2019/05/19/kubernetes-basic-1.html#%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EC%9D%98-%EA%B3%BC%EA%B1%B0-%ED%98%84%EC%9E%AC-%EB%AF%B8%EB%9E%98

 

쿠버네티스 시작하기 - Kubernetes란 무엇인가?

쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 1주일에 수십억 개의 컨테이너를 생성하는 구글이 내부 배포시스템으로 사용하던 borg를 기반으로 2014년 프로젝트를 시작했고 여러 커뮤니티의 아이디어와 좋은 사례를 모아 빠르게 발전하고 있습니다. 이 글은 쿠버네티스가 무엇인지 궁금한 엔지니어를 대상으로 쿠버...

subicura.com

https://bcho.tistory.com/1258?category=731548

 

쿠버네티스 #4 - 아키텍쳐

쿠버네티스 #4 아키텍쳐 조대협 (http://bcho.tistory.com) 쿠버네티스에 대한 개념 이해가 끝났으면, 이제 쿠버네티스가 실제로 어떤 구조로 구현이 되어 있는지 아키텍쳐를 살펴보도록 하자. 아키텍쳐를 이용하..

bcho.tistory.com

https://phoenixnap.com/kb/understanding-kubernetes-architecture-diagrams

 

반응형