Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

쟝이의 세상

쿠버네티스 개념 정리 본문

수업내용

쿠버네티스 개념 정리

zyangee 2024. 9. 25. 10:16

💡 쿠버네티스(kubernetes) 용어 정리

: 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 예약하고 자동화하기 위한 컨테이너 오케스트레이션 플랫폼

== 다중 서버 컴퓨터의 운영을 감독하고 다양한 프로그램을 관리하는 클러스터 관리 소프트웨어

 

클러스터?
: 컨테이너화된 애플리케이션을 실행하는 컴퓨터 노드 또는 작업자 머신 그룹
== 가상 서버들이 속한 클라우드
(마스터 노드 + 워커 노드)
노드?
: 보통은 네트워크에 연결되어 있는 1개의 기기를 의미
== 클러스터 내의 가상 서버
(마스터 노드와 워커 노드로 분리)
컨테이너?
: 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지
도커?
: 컨테이너 기술을 기반으로 한 일종의 가상화 플랫폼


💡 파드와 컨테이너

출처: https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/explore/explore-intro/

✔️ 컨테이너 = 애플리케이션
(완전한 애플리케이션의 일부 기능일 수도, 완전한 애플리케이션 그 자체일 수도)

  • Example 1. 완전한 애플리케이션의 일부
    • 여러 개의 컨테이너들이 모여 하나의 완전한 애플리케이션을 구성
    • 여러 개의 컨테이너가 모여 하나의 파드가 된다. (파드 = 완전한 애플리케이션)
  • Example 2. 완전한 애플리케이션
    • 하나의 컨테이너로도 하나의 파드 구성 가능

💡 쿠버네티스 클러스터 구성 요소

출처: https://kubernetes.io/docs/concepts/overview/components/

쿠버네티스 클러스터는 컨트롤 플레인(Master Node)노드(Worker Node) 두 개의 부분으로 구분할 수 있다.

노드는 자체 리눅스 환경을 가진 물리 또는 가상머신 자체로 k8s의 물리적인 단위이다.

(k8s의 논리적인 단위: pod, service)


💡 컨트롤 플레인(Control Plane - Master Node)

✔️ kube-apiserver

: Kubernetes 클러스터의 API를 제공하는 컴포넌트, 클러스터 외부에서의 통신을 관리하고 클러스터 내의 리소스를 조작하는 데 사용

"주요 기능"

1. 리소스 관리
(이를 통해 관리자는 노드, 파드, 서비스, 볼륨 등과 같은 리소스를 생성, 수정, 삭제하여 애플리케이션 배포와 확장을 지원)
2. 리소스 디스커버리
(클러스터 외부에서는 서비스 이름을 사용하여 파드에 접근함. 이를 내부 IP와 포트로 변환하여 트래픽을 전달)
3. 스케줄링
(파드를 클러스터 내의 적절한 노드에 스케줄링 하는 역할 수행)
4. 컨트롤러와의 상호작용
(kube Controller Manager와 상호작용하여 클러스터의 상태 유지)

 

✔️ etcd

: 분산 key-value 저장소

"부연설명"
- 사실상 표준 시스템인 쿠버네티스의 기본 데이터 저장소
- 쿠버네티스 API 서버는 각 클러스터의 상태 데이터를 etcd에 저장

 

✔️ kube-scheduler

: 노드를 모니터링하고 컨테이너를 배치할 적절한 노드를 선택

"부연설명"

API 서버와 통신하는 컴포넌트
노드가 배정되지 않은 새로 생성된 파드를 감지하고 새로운 워크로드를 띄우는 역할
(이 때, 클러스터 내 자원할당이 가능한 노드 중 알맞은 노드를 선택하여 해당 노드에 워크로드를 배포하는 역할)

 

✔️ kube-controller-manager

: 쿠버네티스 클러스터에서 실행되는 여러 개의 컨트롤러를 통합 관리하는 프로세스

"주요 컨트롤러"

1. Replication Controller

(사용자가 지정한 파드 복제 수를 유지 = 가용성과 확장성을 보장)

2. ReplicaSet

(레이블 셀렉터를 사용하여 파드 그룹을 관리, Deployment와 주로 사용.

롤링 업데이트 및 롤백과 같은 기능을 지원)

3. Deployment

(애플리케이션의 롤링 업데이트와 버전 관리 = 새로운 버전의 애플리케이션을 배포하고 이전 버전을 안전하게 제거하는 작업 수행)

4. StatefulSet

(순서대로 증가하는 고유의 식별자를 가진 파드 그룹을 관리 = 주로 데이터베이스와 같은 상태를 가진 애플리케이션에 사용)


💡 노드(Worker Node)

✔️ kubelet

: Master Node와 통신하여 할당된 파드를 실행하고 관리

"부연설명"

- 컨테이너의 라이프사이클을 관리하고, 파드의 상태를 주기적으로 API 서버에 보고

- Control Plane과의 통신을 위한 징검다리 역할

 

✔️ kube-proxy

: IP 변환 및 네트워크 통신 관리, 각 파드로의 트래픽을 라우팅하는 역할

"부연설명"

새로운 서비스나 엔드포인트가 추가 혹은 삭제된다면 API 서버는 이러한 변화를 kube-proxy에 전달한다.

-> 엔드포인트? 각 파드를 대표하는 IP

 

✔️ Container Runtime

: 컨테이너를 실행하고 관리하는 도구

-> 컨테이너 자체를 만드는 저수준 런타임과 컨테이너를 논리적으로 실행하는 고수준 런타임으로 나뉜다.

"부연설명"

1. 저수준 런타임

: 네임스페이스, cgroup, 루트 디렉토리 격리 등을 통해 컨테이너를 생성하고 실행

2. 고수준 런타임

: 저수준 런타임 위에 배치되어 논리적으로 이미지 실행

(이미지 전송, 복사, 압축 해제 등에 관여하며 실행 중인 컨테이너 모니터링 진행)

'수업내용' 카테고리의 다른 글

Kubernetes(label, namespace)  (0) 2024.09.27
Kubernetes(POD, Deployment, ReplicaSet, Service 생성)  (1) 2024.09.27
OWASP ZAP  (2) 2024.09.11
php <form태그와 변수값 전달>  (6) 2024.09.03
php <배열과 함수>  (2) 2024.09.02