쿠버네티스: Difference between revisions

From IT Wiki
No edit summary
No edit summary
 
(3 intermediate revisions by 3 users not shown)
Line 2: Line 2:
;Kubernetes
;Kubernetes
; 컨테이너 기반 가상화 관리용 시스템
; 컨테이너 기반 가상화 관리용 시스템
쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 지원 그리고 도구들은 광범위하게 제공된다.


== 쿠버네티스 아키텍처 ==
== 쿠버네티스 아키텍처 ==
Line 7: Line 10:


== 아키텍처 구성 ==
== 아키텍처 구성 ==
* '''쿠버네티스 마스터'''
** 컨트롤러 매니저: 워커 노드 관리
** API 서버: 워커 노드와 통신용
** 스케줄러: 워커 노드에 포드 할당
** Etcd: 클러스터 상태 및 설정 정보 저장소
* '''워커 노드'''
** 포드: 작업 단위, 하나 이상의 컨테이너 포함
** Kube-Proxy: 컨테이너간 네트워킹 및 로드밸런싱
** Kubelet: 마스터 API와 통신하는 에이전트


=== 쿠버네티스 마스터 (Kubernetes Master) ===
마스터는 클러스터 관리의 중심 역할을 하며, 주로 제어, 관리, 통신 기능을 담당하는 구성 요소를 포함한다.
* '''API 서버''': 통신의 핵심, 사용자 및 시스템이 클러스터와 상호작용하는 인터페이스
* '''컨트롤러 매니저''': 노드 및 포드 상태 유지 관리
* '''스케줄러''': 워커 노드에 포드를 배치
* '''Etcd''': 클러스터 상태 및 메타데이터 저장소
=== 컨테이너 런타임 (Container Runtime) ===
컨테이너 런타임은 워커 노드에서 포드 내부의 컨테이너들을 실제로 실행하는 환경을 제공한다.
* '''컨테이너''': 애플리케이션이 실행되는 가장 작은 단위로, 쿠버네티스에서 포드 내에서 실행된다.
** '''Docker''', '''Containerd''', '''CRI-O''': 쿠버네티스가 지원하는 다양한 컨테이너 런타임들
=== 워커 노드 (Worker Node) ===
실제 애플리케이션이 실행되는 곳으로, 여러 자원 관리를 수행하는 하위 시스템이 포함된다.
* '''Kubelet''': 워커 노드에서 API 서버와 상호작용하며, 포드를 관리하고 배포
* '''Kube-Proxy''': 네트워크 트래픽 및 로드 밸런싱 관리
* '''포드 (Pod)''': 작업의 단위, 애플리케이션이 실행되는 컨테이너들을 포함함
* '''서비스 (Service)''': 외부 클라이언트와 내부 포드 간 통신을 위한 로드밸런싱과 네트워크 엔드포인트를 정의
== 애플리케이션 및 네트워크 단위 ==
표면적으로 사용자가 접하는 애플리케이션 및 네트워크 단위를 상대적으로 상위 개념부터 나열하면 아래와 같다.
'''클러스터 (Cluster)'''
* 쿠버네티스의 가장 큰 개념으로, 여러 노드(서버)로 구성된다. 클라우드 서비스에서도 쿠버네티스를 사용하기 위해선 먼저 클러스터를 생성한다.
* 클러스터는 쿠버네티스 마스터와 여러 워커 노드를 포함하며, 이들이 함께 동작해 애플리케이션을 실행한다.
'''네임스페이스 (Namespace)'''
* 클러스터 안에서 논리적으로 리소스를 구분하는 단위이다.
* 네임스페이스는 여러 팀이나 애플리케이션이 동일 클러스터에서 격리된 상태로 동작할 수 있게 한다.
'''마스터 (Master)'''
* 클러스터를 제어하고 관리하는 노드로 클러스터 전체의 상태와 애플리케이션 배포를 관리하는 역할을 한다.
* 마스터는 여러 컴포넌트(API 서버, 스케줄러, 컨트롤러 매니저, Etcd)를 실행하는 노드이다.
'''워커 노드 (Worker Node)'''
* 클러스터 내에서 실제 애플리케이션이 실행되는 노드
* 워커 노드는 컨테이너 런타임, Kubelet, Kube-Proxy 등의 컴포넌트를 포함하며, 포드를 실행하는 역할을 한다.
'''디플로이먼트 (Deployment)'''
* 포드의 상태를 관리하는 상위 개념으로, 포드의 업데이트, 복구, 스케일링 등을 관리한다.
* 디플로이먼트는 포드의 선언적 관리를 제공하며, 애플리케이션의 안정적 배포를 위해 사용된다.
'''레플리카셋 (ReplicaSet)'''
* 디플로이먼트가 관리하는 개념으로, 여러 포드의 복제본을 유지하는 역할을 한다.
* 이를 통해 애플리케이션이 항상 특정 수의 포드를 유지하며 실행될 수 있도록 한다.
'''포드 (Pod)'''
* 쿠버네티스의 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함한다.
* 포드는 실제 애플리케이션의 실행 환경을 제공하며, 여러 컨테이너가 협력해 작업을 처리한다.
'''컨테이너 (Container)'''
* 포드 내부에서 실행되는 애플리케이션 단위로, 실제로 애플리케이션 코드를 실행하는 환경이다.
* 컨테이너는 가상화된 독립 환경에서 동작하며, 포드가 이 컨테이너를 관리한다.
'''서비스 (Service)'''
* 포드가 외부나 클러스터 내에서 네트워크 통신을 할 수 있도록 하는 추상화된 네트워크 엔드포인트이다.
* 포드의 IP 주소가 변하더라도 서비스가 이를 해결하여 외부 통신이 가능하게 해준다.
=== (참고) 계층 구조 ===
# 클러스터
#* 네임스페이스
#* 마스터 노드
#* 워커 노드
#** 포드
#*** 컨테이너
# 디플로이먼트
#* 레플리카셋
#** 포드
#*** 컨테이너
# 서비스 (포드의 네트워킹을 담당)


== 현황 ==
== 현황 ==

Latest revision as of 02:08, 3 October 2024

Kubernetes
컨테이너 기반 가상화 관리용 시스템


쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 지원 그리고 도구들은 광범위하게 제공된다.

쿠버네티스 아키텍처[edit | edit source]

쿠버네티스 아키텍처.png

아키텍처 구성[edit | edit source]

쿠버네티스 마스터 (Kubernetes Master)[edit | edit source]

마스터는 클러스터 관리의 중심 역할을 하며, 주로 제어, 관리, 통신 기능을 담당하는 구성 요소를 포함한다.

  • API 서버: 통신의 핵심, 사용자 및 시스템이 클러스터와 상호작용하는 인터페이스
  • 컨트롤러 매니저: 노드 및 포드 상태 유지 관리
  • 스케줄러: 워커 노드에 포드를 배치
  • Etcd: 클러스터 상태 및 메타데이터 저장소

컨테이너 런타임 (Container Runtime)[edit | edit source]

컨테이너 런타임은 워커 노드에서 포드 내부의 컨테이너들을 실제로 실행하는 환경을 제공한다.

  • 컨테이너: 애플리케이션이 실행되는 가장 작은 단위로, 쿠버네티스에서 포드 내에서 실행된다.
    • Docker, Containerd, CRI-O: 쿠버네티스가 지원하는 다양한 컨테이너 런타임들

워커 노드 (Worker Node)[edit | edit source]

실제 애플리케이션이 실행되는 곳으로, 여러 자원 관리를 수행하는 하위 시스템이 포함된다.

  • Kubelet: 워커 노드에서 API 서버와 상호작용하며, 포드를 관리하고 배포
  • Kube-Proxy: 네트워크 트래픽 및 로드 밸런싱 관리
  • 포드 (Pod): 작업의 단위, 애플리케이션이 실행되는 컨테이너들을 포함함
  • 서비스 (Service): 외부 클라이언트와 내부 포드 간 통신을 위한 로드밸런싱과 네트워크 엔드포인트를 정의

애플리케이션 및 네트워크 단위[edit | edit source]

표면적으로 사용자가 접하는 애플리케이션 및 네트워크 단위를 상대적으로 상위 개념부터 나열하면 아래와 같다.

클러스터 (Cluster)

  • 쿠버네티스의 가장 큰 개념으로, 여러 노드(서버)로 구성된다. 클라우드 서비스에서도 쿠버네티스를 사용하기 위해선 먼저 클러스터를 생성한다.
  • 클러스터는 쿠버네티스 마스터와 여러 워커 노드를 포함하며, 이들이 함께 동작해 애플리케이션을 실행한다.

네임스페이스 (Namespace)

  • 클러스터 안에서 논리적으로 리소스를 구분하는 단위이다.
  • 네임스페이스는 여러 팀이나 애플리케이션이 동일 클러스터에서 격리된 상태로 동작할 수 있게 한다.

마스터 (Master)

  • 클러스터를 제어하고 관리하는 노드로 클러스터 전체의 상태와 애플리케이션 배포를 관리하는 역할을 한다.
  • 마스터는 여러 컴포넌트(API 서버, 스케줄러, 컨트롤러 매니저, Etcd)를 실행하는 노드이다.

워커 노드 (Worker Node)

  • 클러스터 내에서 실제 애플리케이션이 실행되는 노드
  • 워커 노드는 컨테이너 런타임, Kubelet, Kube-Proxy 등의 컴포넌트를 포함하며, 포드를 실행하는 역할을 한다.

디플로이먼트 (Deployment)

  • 포드의 상태를 관리하는 상위 개념으로, 포드의 업데이트, 복구, 스케일링 등을 관리한다.
  • 디플로이먼트는 포드의 선언적 관리를 제공하며, 애플리케이션의 안정적 배포를 위해 사용된다.

레플리카셋 (ReplicaSet)

  • 디플로이먼트가 관리하는 개념으로, 여러 포드의 복제본을 유지하는 역할을 한다.
  • 이를 통해 애플리케이션이 항상 특정 수의 포드를 유지하며 실행될 수 있도록 한다.

포드 (Pod)

  • 쿠버네티스의 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함한다.
  • 포드는 실제 애플리케이션의 실행 환경을 제공하며, 여러 컨테이너가 협력해 작업을 처리한다.

컨테이너 (Container)

  • 포드 내부에서 실행되는 애플리케이션 단위로, 실제로 애플리케이션 코드를 실행하는 환경이다.
  • 컨테이너는 가상화된 독립 환경에서 동작하며, 포드가 이 컨테이너를 관리한다.

서비스 (Service)

  • 포드가 외부나 클러스터 내에서 네트워크 통신을 할 수 있도록 하는 추상화된 네트워크 엔드포인트이다.
  • 포드의 IP 주소가 변하더라도 서비스가 이를 해결하여 외부 통신이 가능하게 해준다.

(참고) 계층 구조[edit | edit source]

  1. 클러스터
    • 네임스페이스
    • 마스터 노드
    • 워커 노드
      • 포드
        • 컨테이너
  2. 디플로이먼트
    • 레플리카셋
      • 포드
        • 컨테이너
  3. 서비스 (포드의 네트워킹을 담당)

현황[edit | edit source]

  • IBM, MS, 오라클 등의 CSP에서 쿠버네티스 지원

같이 보기[edit | edit source]