Kubernetes발행일 2025. 7. 20.원본 https://blog.naver.com/jword_/223938529891 ↗

Kubernetes(k8s) 아키텍처

Kubernetes(k8s) 아키텍처 — #개발자의도구들 #쿠버네티스 #Kubernetes #k8s #k8s아키텍처 AI스쿨 msa기반 java 백엔드 코스 중에 공...

#DevOps/cloudOps#Naver Blog

#개발자의도구들 #쿠버네티스 #Kubernetes #k8s #k8s아키텍처

​

AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다

\* 현재 Spring x 프로젝트를 진행하고 있습니다. 전체 목차를 보시려면 여기를 눌러주세요.

\* Devops stack: 여기

\* 리눅스 기본기: 여기

​

이제 뭐를 추상화 하지?

이전글을 통해 Container에 대해 공부하였습니다. 해당 글을 작성하면서 컨테이너 아키텍처가 현재 가지는 의미가 어플리케이션 배포의 추상화에 의의를 뒀었습니다. 여기서 뭘 더 추상화 할 수 있을까요?

​

컨테이너를 실행시키는 나 자신을 추상화하는건 어떨까요? 컨테이너를 사용하더라도 우리는 여전히 컨테이너를 직접 실행해야합니다.서버가 터져서 컨테이너가 꺼지면 다시 켜줘야하고, 여러개의 컨테이너를 띄웠다면 직접 로드 밸런싱도 설정해줘야하고, 리소스 부족하면 직접 할당도 해야하고... 매우 번거로운 일들이 많네요.

​

이런 일련의 일들을 자동화 할 수 있는 도구가 있으면 얼마나 좋을까요? 서버를 운영하는 나 자신을 추상화 한다. 매우 복잡해 보입니다. 하지만 걱정마세요, 이미 구글이 만들어 뒀습니다. 바로 쿠버네티스를 말이죠.

​

text 코드 예제
                                    👉 보통 Kubernetes를 K8S 로 줄여서 표기함

쿠버네티스 🎼 오케스트레이션

이미지

text 코드 예제
                                    🎼 Orchestration ?

1840, "the act, process, or art of arranging music for an orchestra,"
 from French orchestration (see orchestrate).

U.S. slang sense of "an overcoat" is by 1940.

음악에서 오케스트라는 연주를 지휘하는 사람입니다. 여러 악기들을 적절하기 지휘하여 하나의 완성된 음악을 만들어냅니다. 이와 유사하게 동작하는 것이 바로 쿠버네티스입니다.

​

쿠버네티스에서 사용하는 오케스트레이션은 쿠버네티스에서 실행되는 컨테이너들에 대한 관리, 모니터링, 스케쥴링, 스케일링, 네트워킹 등을 조직하고 실행하는 것을 의미합니다.

​

text 코드 예제
                                    🔨 used for
- provisioning and deployment
- configuration and scheduling
- Resource allocation
- container availability
- Scaling (up and down)
- Load Balancing
- Monitoring
- Keeping interactions between containers secure

감이 잘 안올 수 있는데, 예시를 들면, 서버하나가 실행되었다가 터졌다고 가정해봅시다. 원래 상태로 복구하기 위해서 개발자가 직접 서버를 재실행 시켜 줘야 했습니다.

이미지

하지만 K8S를 사용하면, 클러스터 내부에 있는 Controller가 알아서 복구를 시켜줍니다. 그동안 개발자들은 상관 안쓰고 다른 일을 할 수 있어요.

이미지

이런 식으로 기존에 개발자 개인이 서버 안정성을 위해 관리를 해줘야 했던 부분을 K8S가 자동으로 해준다고 보시면 됩니다.

쿠버네티스 아키텍처

🏗️ Cluster Architecture

Cluster(Old English clyster "a number of things growing naturally together,")는 항상 말했듯이 노드들의 집합이며, 노드는 VM 혹은 물리적 머신을 의미합니다.

​

클러스터 내부는 크게 두가지 종류로 나뉠 수 있습니다. 제어를 담당하는 곳(control plane component)과, 제어를 받는 곳(node component)입니다. 위의 예시에서 Controller의 역할을 수행하는 것이 Control Plane Component, 서버를 직접 띄우는 것과 같이 프로그램을 실행하는 노드를 Node Component로 이해하면 됩니다.

​

이미지

출처: K8S 공식 문서 (맨 아래 링크)

보통 K8S 클러스터는 클라우드 서비스 제공 업체에서 자동으로 구축해줍니다. 특히나 Control Plane 부분은 우리가 건들게 딱히 없습니다. 우리가 집중해야할 곳은 바로 Node를 얼마나 띄울 것인지, 어떻게 띄울 것인지, 어떤 서버를 띄울것인지 .. 등 실제 서버 실행과 관련된 부분들입니다.

​

그래도 각각의 역할을 알아두면 좋으므로 가볍게 짚고 넘어가겠습니다.

​

🎮Control Plane Component

  • kube-api server: k8s control plane의 Front end입니다. 실질적으로 모든 통제권은 Control plane에게 있는데 이와 접속하기 위한 서버로 보시며 됩니다.
  • etcd:
  • key - value store
  • 클러스터 관련 메타 데이터가 저장되어 있는 곳

​

  • kube-scheduler
  • Pods(이후 나옴)를 어떤 노드에 배치할지 결정

​

  • kube-controller-manger
  • 말그대로 controller들의 매지저이다.
  • 각 controller들의 전체 통제권을 가진 매니저

​

  • cloud-controller-manger
  • Cloud Service에서 제공하는 K8S를 사용할 경우 추가되는 컨트롤러

​

📦Node components

  • Kublet
  • 컨테이너를 동작시키고, 상태를 관리하는 매니저
  • 워커 노드 내부에 존재

​

  • continaer runtime
  • 컨테이너를 잘 관리할 수 있도록 도와주는 역할

​

REF

https://kubernetes.io/docs/concepts/architecture/

이미지

[Cluster Architecture
The architectural concepts behind Kubernetes.
kubernetes.io](https://kubernetes.io/docs/concepts/architecture/)

​