쿠버네티스 마스터

안녕하세요. 명동교자입니다.

요즘 제가 관심있게 살펴보고 있는 분야는 쿠버네티스 입니다.

오늘부터 쿠버네티스를 공부하면서 배운 내용을 블로그에 정리해보려고 합니다.

오늘은 첫 시간으로 쿠버네티스 아키텍처에 대해서 살펴보겠습니다.



쿠버네티스는 마스터와 노드로 구성됩니다. 노드는 여러 개로 구성될 수 있으며 위 그림과 같이 서로 연결되어 있습니다.

쿠버네티스 마스터

쿠버네티스 마스터(Kubernetes Master)는 다음과 같은 여러 가지 기능을 제공합니다.

  • 인증 및 인가 (Authentication & Authorization)
  • RESTful API 엔트리 포인트
  • 노드를 위한 컨테이너 배포 스케줄러
  • 확장 및 복제 컨트롤러
  • 클러스터 구성 정보

쿠버네티스 마스터는 위 그림과 같이 API 서버 (kube-apiserver), 스케줄러(kube-scheduler), 컨트롤러 관리자(kube-controller-manager), 프록시(kubu-proxy), 큐블렛(kubelet), 에티시디(etcd)로 구성되어 있습니다.

kube-apiserver

API 서버는 http나 https 기반 RESTful API를 제공합니다. 쿠버네티스 구성 요소간 허브 역할을 합니다.

kube-scheduler

스케줄러는 어떤 노드에서 동작을 수행할지 컨테이너에 대한 선택 기능을 지원합니다. 컨테이너를 노드에 디스패치(dispatch) 및 연결하기 위한 우선순위를 다음의 항목을 통해 결정합니다.
  • CPU
  • 메모리
  • 수행 중인 컨테이너 개수
kube-controller-manager

컨트롤러 관리자는 다음과 같은 클러스터의 운영 기능을 수행합니다. 

  • 노드관리
  • 내부 정보 생성 및 업데이트
  • 상태 변경
kube-proxy

프록시는 노드의 각 컨테이너를 위한 네트워크 프록시와 로드 밸런서를 제공합니다. 프록시는 kube-proxy 데몬을 시작한 후 리눅스의 iptable 규칙을 설정합니다. 이 때 다음과 같은 명령어로 NAT 테이블 규칙을 검증할 수 있습니다.

ipatables -t nat -L
or
ipatables -t nat -S

kubelet

큐블렛은 쿠버네티스의 주요 프로세스이며, 다음을 처리합니다.

  • 확인 및 보고를 위해 주기적으로 API 컨트롤러에 접근
  • 컨테이너 운영 수행
  • http 서버로 동작해 단순한 API 제공
etcd

에티시디는 분산 키-값 형태의 데이터 저장소 입니다 (참조: https://coreos.com/etcd). 에티시디는 RESTful API를 사용해 접근할 수 있으며, 네트워크를 통해 CRUD를 운영할 수 있습니다. 쿠버네티스의 주요 데이터 저장소입니다.
다음 curl 명령을 사용해 에티시디의 쿠버네티스 구성 상태를 볼 수 있습니다.

$ curl -L http://127.0.0.1:4001/v2/keys/registry

이상으로 쿠버네티스의 마스터 노드에 대해서 알아보았습니다.

댓글

주간 인기글

[정보] 인스타그램은 당신의 소리를 '듣고' 있을 수도 있습니다

[Angular] 모델, 값이 바뀌었는데 화면 template 이 업데이트 되지 않을 때 조치 팁

AWS Lambda - API Gateway로 S3 파일 업로드 API 만들기 #3 - API Gateway - Lambda 연결 및 테스트

[AWS] Lambda + API GateWay를 이용해 간단한 RESTful API 만들기 #1

[AWS] Lambda + API GateWay를 이용해 간단한 RESTful API 만들기 #2