본문 바로가기

kubernetes(cka)

[Kubernetes, cka] 01. Kubernetes cluster 구성 요소

Kubernetes란?

쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화해주는 오케스트레이션 tool.

오케스트레이션 Tool이란 여러 컴퓨터, 서비스, 애플리케이션 간의 복잡한 작업과 프로세스를 자동으로 관리하고 조정하는 소프트웨어 도구를 말함.

 

Master Node

master노드는 클러스터를 관리하고 조정하는 역할을 담당. 주요 구성 요소는 아래와 같음

  • ETCD : key-value 저장소로, 클러스터의 모든 정보를 저장
  • API Server : 쿠버네티스 API를 노출하고, 클러스터 내의 모든 조작과 통신의 중심 역할
  • Scheduler : 새로 생성된 컨테이너에 대해 실행될 최적의 노드를 선택
  • Controller Manager : Node controller, 엔드포인트 Controller 등 다양한 클러스터 상태를 관리하는 컨트롤러들을 운영

 

작업 노드 (Worker Node)

작업 노드는 실제 애플리케이션과 서비스를 실행하는 데 사용. 주요 구성 요소는 다음과 같음

  • Kubelet : 노드 상에서 컨테이너를 실행하고 관리하는 에이전트. API 서버로부터 지시를 받아 컨테이너를 시작, 중지 및 관리
  • Kube-proxy : 네트워크 프록시와 로드 밸런서 역할을 하며, 컨테이너 간의 네트워크 통신을 가능하게 함
  • Container Runtime: 컨테이너를 실행하기 위한 환경을 제공. Docker, containerd 등이 여기에 해당

 

컨테이너 tool 로 Docker vs Containerd

- 처음에는 도커만 썼는데 갈수록 다른것들도 써야해서 공통된 인터페이스 CRI (Container Runtim Interface) 를 만듬

- 그래서 CRI 쓰면서 도커도 쓰게 해주려고 dockershim이란걸 써서 도커도 쓰게 해줌

- 나중에 도커 안에 containerd 라는 독립 daemon이 생겼고 이건 cri 를 만족해서 이걸 kubernetes에서 사용할수 있게됨.

- 이제 dockershim 유지/지원해 줄 필요없어져서 kubernetes v1.24부터 docker는 지원 안함 

 

- ctr: Containerd의 커맨드라인 도구로, 주로 디버깅에 사용
- nerdctl: Docker와 유사한 사용자 경험을 제공하는 Containerd용 커맨드라인 도구

- crictl: CRI 호환 컨테이너 런타임과 상호작용하기 위한 쿠버네티스 커뮤니티에서 개발된 커맨드라인 유틸리티로, 주로 디버깅에 사용

 

ETCD

분산된 key value 저장소. 근데 이게 kubernetes에서 사용되는거

쿠버네티스에서는 etcd는 클러스터 내에서 생기는 모든 변경점들을 기록함.( 노드, 파드, 시크릿, 계정, 역할, 역할 바인딩 등)

 

Kube- api server

클러스터 내에서 변경사항들을 조정하고 관리함. kubectl 을 통해서도 할수 있고(결국 이것도 api 호출하는것), api 를 직접 호출해서 요청을 보낼수 있음.

이사진 위에서 pod를 생성하는걸 예시로 들면.

1. 인증, 2. 요청, 3. 데이터 가져오고, 4. ectd 업데이트 하고, 5. etcd랑 실제 pod 현황 비교해서 안맞으면 6. 스케줄링 하고 할수 있음

 

Kube controller manager

- 구성요소들의 지속적인 모니터링 및 유지하도록 하는 프로세스 (kube-apiserver를 통해서)

 

 Kube scheduler

- 파드가 어디 노드로 갈지 결정함. 실제로위치시키는건 아니고 결정만. 실제 위치시키는건 kubelet이함

 

 Kubelet

- 각 노드에서 실행되고 이건 직접 깔아줘야함. (kubeadm이 알아서 깔아주지 않음)

- 클러스터에 노드를 등록하는 역할

- 파드를 생성하고 상태 모니터링해서 api server에 보고

 

 kube proxy

- 클러스터 내부에서 통신이 가능하게해주는 네트워킹 솔루션

- 각 노드에서 실행되고 있음

- 고정된 ip 를 가진것이 아니라 내부 가상 네트워크로 연결해줌.

 

'kubernetes(cka)' 카테고리의 다른 글

[Kubernetes, cka] 06. Manual Scheduling  (0) 2024.04.01
[Kubernetes, cka] 05. Service, Namespaces  (1) 2024.03.24
[Kubernetes, cka] 04. Deployment  (0) 2024.03.24
[Kubernetes, cka] 03. Replica set  (0) 2024.03.24
[Kubernetes, cka] 02. Pod  (2) 2024.03.17