쿠버네티스(kubernetes) 구성요소

By | 2020년 4월 15일
Table of Contents

쿠버네티스(kubernetes) 구성요소

참조

kubernetes 는 다수의 서버를 관리하는 툴입니다.

하나의 서버가 아니라, 여러 대의 서버를 관리하기 위한 툴이기에 여러가지 구성요소가 존재합니다.

kubernetes 는 마스터(master), 노드(node), 애드온(addon)으로 구성됩니다.

master

마스터에는 etcd, kube-apiserver, kube-scheduler, kube-controller-manager, cloud-controller-manager 등이 존재합니다.

etcd

etcd 는 key-value 기반의 데이타 저장소입니다. kubernetes 가 관리하는 데이타를 모두 관리합니다. 안정성을 위해 etcd 자체를 클러스터로 구성할 수 있습니다.

kube-apiserver

kube-apiserver 를 kubernetes 에 들어오는 모든 API 호출을 담당합니다. 호출된 API 의 유효성을 검증하고, 실제 서비스로 전달합니다.

kube-scheduler

kube-scheduler 는 클러스터 내 여러 노드(node) 중, 자원할당이 가능한 노드를 선택하여, 그곳에 포드(pod) 를 생성합니다.

특정 노드에 데이타가 있는 경우, 그 노드를 지정하여 할당하는 것도 가능합니다.

kube-controller-manager

포드는 각각의 컨트롤러에 의해 컨트롤 됩니다. kube-controller-manager 는 이러한 컨트롤러를 관리하는 역할을 합니다.

cloud-controller-manager

클라우드 서비스를 제공해 주는 곳들에서 쿠버네티스의 컨트롤러들을 자신들의 서비스와 연계해서 사용하기 위해서 사용합니다.

cloud-controller-manager 는 각 클라우드 서비스 제공자가 관리하도록 되어 있습니다.

cloud-controller-manager 4 가지 컨트롤러로 구성됩니다.

Node Controller

클라우드 서비스 내에서 노드를 관리하기 위해서 사용합니다.

Route Controller

각 클라우드 인프라내에서의 네트워크 라우팅을 관리하는데 사용합니다.

kubernetes 는 네트워크를 자체적으로 관리합니다. 즉, 클라우드 서비스업체가 제공하는 Private IP 와는 또다른 IP 를 제공하고, 심지어 SSL 인증서를 자체적으로 생성해서 https 통신을 합니다.

Service Controller

각 클라우드 서비스에서 제공하는 로드밸런서를 생성/갱신/삭제하는데 사용합니다.

Volume Controller

클라우드 서비스에서 볼륨을 생성해서 노드에 붙이고 마운트해서 볼륨을 관리하는데 사용합니다.

node

노드는 kubelet, kube-proxy, Container Runtime 으로 구성됩니다.

kubelet

포드내의 컨테이너들이 실행되는걸 직접적으로 관리하는 역할을 합니다.

kube-proxy

쿠버네티스는 클러스터 내부에 별도의 가상 네트워크를 설정하고 관리합니다. kube-proxy는 이런 가상 네트워크가 동작할 수 있게 하는 실질적인 역할을 하는 프로세스입니다.

Container Runtime

Docker 등 실제로 컨테이너를 실행시키는 구현체입니다.

컨테이너에 관한 표준을 제정하는 역할을 하는 OCI(Open Container Initiative, https://www.opencontainers.org/)의 런타임 규격(runtime-spec)을 구현하고 있는 Container Runtime 이라면 쿠버네티스에서 사용할 수 있습니다.

addon

네트워킹 애드온

쿠버네티스는 클러스터 내부에 가상네트워크를 구성해서 사용하는데, 이때 kuby-proxy 이외에 네트워킹 관련한 애드온을 사용합니다.

DNS 애드온

쿠버네티스 서비스들에 DNS 레코드를 제공하는 역할을 합니다. 쿠버네티스 내부에서 실행된 컨테이너들은 자동으로 DNS서버에 등록됩니다.

대시보드 애드온

클러스터 현황을 한눈에 쉽게 파악할 수 있습니다.

컨테이너 자원 모니터링

클러스터 내부에서 실행중인 컨테이너의 상태를 모니터링하기 위해서는 cpu, 메모리 같은 필요한 메트릭 데이터들을 시계열형식으로 저장하고 볼수 있는 방법을 제공하는데 필요한 애드온입니다.

클러스터 로깅

클라우드 서비스 업체가 제공하는 인스턴스를 이용할 경우, 서비스 업체가 로그를 수집해 주지만, 자체적으로 클러스터를 구성하는 경우 로그 수집방안을 세워야 합니다.

보통 ELK 가 많이 사용됩니다.

답글 남기기