빅토리 코딩
article thumbnail
Published 2023. 5. 2. 17:28
Kubernetes 기초 Server/kubernetes
728x90
반응형
우리 회사에서 요즘 mas의 대해 열중하고 있는데 현재 아키텍처팀으로서 devops도 해야 한다 해서,, 예전에 잠깐 했었던 k8s에 대해서 다시 정리한다.

쿠버네티스(Kubernetes) 이란

Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 컨테이너 오케스트레이션 플랫폼이다. 자동 확장, 자가 복구, 롤링 업데이트 및 로드 밸런싱을 포함하여 컨테이너 관리를 위한 일련의 강력한 기능을 제공하며 확장된 애플리케이션을 보다 쉽게 ​​배포하고 관리할 수 있으며 유연성과 효율성이 향상되는 이점도 누릴 수 있다. 더 자세한 내용은 공식 페이지(https://kubernetes.io/ko/docs/concepts/overview/)에서 읽을 수 있다.

쿠버네티스 개념

쿠버네티스의 핵심 개념 Desired State이다. 말 그대로 '원하는 상태'로 관리자가 설정한 대로  현재 시스템이 유지되는지 항상 체크한다. 관리자가 개체를 생성 및 업데이트를 하면 현재 상태와 비교하여 두상태를 수렴하는데 필요한 조치를 취한다. 

출처 : https://subicura.com/2019/05/19/kubernetes-basic-1.html

 

용어들은 제일 큰 거부터 작은 단위로 내려가는 순으로 설명하겠다

Cluster

컨테이너화된 애플리케이션을 실행하기 위해 함께 작동하는 노드들의 그룹이다. 클러스터는 클러스터를 관리하는 마스터 노드(Master Node)와 하나 이상의 워커 노드(Worker Node)로 구성된다.

Node

컨테이너화된 애플리케이션을 실행하는 클러스터 내의 워커 머신을 말한다. 각 노드는 하드웨어적으로 서버 하나를 보통 지칭한다. 노드는 종류는 master node와  worker node가 있다.

Master Node

master node에는 보통 컨트롤 플레인(Control Plane)을 설정한다. 컨트롤 플레인 클러스터 전체를 관리하는 중앙 제어 장치로 노드에 컨테이너를 스케줄링하고, 노드의 상태를 모니터링하며, 필요에 따라 클러스터를 확장하거나 축소하는 등 클러스터의 전반적인 상태를 관리한다. 이에는 API 서버(API Server)를 노출하는 Kubernetes API, 클러스터 구성 데이터를 저장하는 etcd 데이터베이스, 컨테이너 스케줄링 및 클러스터 확장을 관리하는 컨트롤러 관리자(Controller Manager)와 스케줄러(Scheduler) 등의 여러 구성 요소가 있다.

- API 서버(API Server) 

API 서버는 모든 클러스터 정보 및 명령에 대한 RESTful API를 제공하는 Kubernetes 클러스터의 중심 구성 요소이다. 클러스터 구성 요소와 상호 작용하는 데 사용된다.

- 스케줄러(Scheduler)

스케줄러는 새로 생성된 pod를 어떤 node에 할당할지 결정하는 역할을 한다. pod가 실행하기에 적합한 node를 찾아 해당 node에 할당한다.

- 컨트롤러 관리자(Controller Manager)

컨트롤러 관리자는 Cluest에서 실행되는 다양한 리소스를 관리한다. 노드 컨트롤러, 복제 컨트롤러, 엔드포인트 컨트롤러 등과 같은 다양한 유형의 컨트롤러가 있습니다. 각 컨트롤러는 노드 상태, 복제, 서비스 검색 등과 같은 특정 기능을 담당한다.

- etcd

Etcd는 Kubernetes 클러스터에 대한 모든 정보를 저장하는 분산 데이터 저장소이다. Cluster의 모든 node에서 실행되며 일관성을 유지하기 위해 데이터가 모든 node에서 동기화됩니다.

Woker Node

컨테이너화된 애플리케이션을 실행하는 Kubernetes 클러스터의 작업자 시스템이다. master node와 통신하여 실행할 컨테이너 및 관리 방법에 대한 지침을 받고 프로그램 컨테이너를 실행하고 필요한 리소스를 제공하는 역할을 담당하고 있다. 애플리케이션 컨테이너를 실행하기 위해 함께 작동하는 여러 구성 요소가 있다.

- Kubelet 

Kubelet은 각 work node에서 실행되며 master node와 통신하여 컨테이너가 예상대로 실행되는지 확인하는 에이전트이다. 컨테이너 시작 및 중지, 상태 보고, 컨테이너 정상 상태 확인을 처리한다.

- 컨테이너 런타임(Container runtime)

컨테이너 런타임은 컨테이너 실행을 담당한다. Docker 및 containerd는 Kubernetes에서 일반적으로 사용되는 컨테이너 런타임의 예이다.

- kube-proxy

kube-proxy는 각 work node에서 실행되고 pod에 대한 네트워크 규칙을 유지 관리하는 네트워크 프락시이다. Cluster 내에서 노출되는 서비스에 대한 라우팅 및 로드 밸런싱을 처리한다.

대충 구성도를 그리면

728x90
반응형
profile

빅토리 코딩

@빅토리 코딩

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그