블랙커피 블로그 스터디 3기를 시작하는 김에 뭐를 올릴까 고민을 했었습니다.
그렇게 고민하다가
"쿠버네티스를 점점 까먹고 있으니 복습을 해보자"
라고 마음먹고 쿠버네티스 관련 글을 적어보자고 결심했습니다.
저는 처음 쿠버네티스를 공부할때 클러스터의 기본구성을 먼저 공부하고
기본구성을 바탕으로 세세하게 공부했을때 효과가 꽤 괜찮았던 경험이 있어서
복습도 처음학습과 동일하게 가져갈 생각으로 클러스터의 구성을 먼저 복습하게 되었습니다.
쿠버네티스의 클러스터 구성
크게 쿠버네티스의 클러스터는 마스터노드 ( Control Plane ) 과 워커 노드 들로 이루어져 있습니다.
컨트롤 플레인
일명 마스터노드 라고 불리는 컨트롤 플레인입니다.
API Server와 Etcd , Scheduler , Controller manager 로 이루어져 있습니다.
보통 3대, 5대 구성을 많이합니다.
API Server
API Server가 제공하는 api를 이용하여 컨트롤 플레인과 워커 노드들은
이 api를 사용하여 서로가 통신할수 있게 됩니다.
ETCD
모든 클러스터 내의 정보를 담고 있는 저장소 입니다.
클러스터의 상태나 설정 정보를 저장하며 키 밸류 형태로 이루어져 있습니다.
스케줄러
리소스 생성시 노드에 알맞게 할당을 해주는 역할을 합니다.
컨트롤러 매니저
컨트롤러를 생성하고 이를 각 노드에 배포하며 관리하는 역할을 합니다.
컨트롤러
클러스터의 상태를 읽고 어떠한 작업을 실행하는 역할입니다.
노드
kublet과 kube-proxy , container-runtime 으로 이루어져 있습니다.
kubulet
클러스터의 각 노드에서 실행되는 에이전트로 API 서버와 통신을 하면서
노드의 상태를 전달하거나 마스터 노드로부터 명령을 받아 작업을 수행하는 역할입니다.
kube-proxy
클러스터의 각 노드에서 실행되는 네트워크 프록시로서 역할을 수행합니다.
userspace, iptables, ipvs, kernelspace 모드가 존재하며 현재는 iptables를 사용합니다.
Container Runtime
컨테이너를 실행을 담당하는 소프트웨어입니다.
대표적으로 Docker, containerd, CRI-O가 있으며 Docker는 1.23버전부터 제거될 예정입니다.
'개발 > Kubernetes' 카테고리의 다른 글
왜 apiversion이 변경되어 있을까 (0) | 2021.06.11 |
---|---|
컨테이너 런타임 (0) | 2021.03.07 |
Mutating Webhook 를 이용한 pod injection (0) | 2021.02.16 |
k8s 에서 spring boot jib image command 수정 (0) | 2020.12.24 |
클러스터 구성 (0) | 2020.09.13 |