끄적끄적 아무기록

Kubernetes 기본 개념과 기능 및 동작 구조

by 현생사는갓생지망생
반응형

1. Container Orchestration

  • Monolithic Application에서 Microservices로의 전환
  • 애플리케이션 안에 모든 비즈니스 로직이 다 들어가 있는 구조 Monolithic
  • Microservices란, 서비스를 비즈니스 경계에 맞게 세분화 하고, 서비스 간 통신은 네트워크 호출을 통해 진행하여 확장 가능하고 회복적이며 유연한 애플리케이션 구성하는 것
  • 기존 Monolithic 방식은 새로운 기능 추가 및 업데이트 어려움. 특정 부분에 문제 발생 시 큰 장애로 이어질 가능성 있음. Scale-Out 시 필요 없는 자원이 함께 증가
  • Kubernetes는 Microservices를 개발하고 실행하기에 최적의 환경

Monolithic/Microservices Architecture 차이 (글/그림 : 주인장 제작)

 

2. Kubernetes 기능

Kubernetes 기능 (글/그림 : 주인장 제작)

 

3. Kubernetes Components

👉🏻 Control Plane Components

  • API Server : Control Plane의 Front-end. Kubernetes REST API를 공개. 모든 데이터 etcd 클러스터에 저장
  • etcd : 분산데이터 저장소. 전체 클러스터의 상태 저장
  • controller manager : API를 사용해 클러스터의 상태 감시 및 조정
  • scheduler : 리소스 요구사항, 서비스 요구사항, HW/SW 제약 사항 등 고려하여 node에 pod를 스케줄링
  • core DNS : 모든 서비스/Pod는 DNS 이름을 가지며 자동검색 (automatic discovery)에 유용

👉🏻 Worker Node Components

  • kube-proxy : node의 네트워크 규칙을 유지 관리
  • kubelet : 각 node에서 실행되는 agent. master components와 통신을 수행하며 pod를 관리 및 감독

 

4. Kubernetes 동작 구조

  • Kubernetes Cluster의 Components는 Cluster를 제어하는 목적을 가진 여러 Master Compnents와 Cluster Node에서 실행되는 Node Components로 구성되어 있다

Kubernetes 동작 구조 (글/그림 : 주인장 제작)

 

5. Managing Pods

Pod와 Label & Selector 개념 (글/그림 : 주인장 제작)

 

6. Kubernetes Controller

Kubernetes Controller 종류 (글/그림 : 주인장 제작)

  • Deployment : 상태가 없는 Application을 배포할 때 사용하는 가장 기본적인 Controller
  • StatefulSet : 상태가 있는 Pod를 관리하는 Controller (컨테이너가 종료되더라도 필요로 하는 데이터가 남게되어 Pod 재시작하면 데이터 보존)

 

7. Pod Network

  • CNI (Container Network Interface)에서 관리하는 Pod간 통신에 사용되는 Cluster 전체 Network

    ✔︎ Ex. Weave Net은 Weaveworks사에서 만든 멀티 호스트 오버레이 네트워킹 솔루션으로 Weave Bridge를 만들어 vRouter를 통해 컨테이너들끼리 통신한다.

Pod Network 구조 (글/그림 : 주인장 제작)

 

8. Service Network

  • Service discovery를 위해 kube-proxy가 관리하는 Cluster-wide 범위의 Virtual IP. 동일한 서비스를 제공하는 Pod 그룹에 단일 진입점을 제공
    • ClusterIP : selector를 지정하여 pod group 구성
    • NodePort : 모든 Node를 대상으로 외부 접속 가능한 Port를 예약
    • LoadBalancer : Public Cloud 지원. LB 자동으로 만들어줌. NodePort/ClusterIP 포함

Service Network 동작 구조 (글/그림 : 주인장 제작)

 

9. Kubernetes Ingress

  • HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출시키는 API
  • Kubernetes에서 Ingress를 사용하기 위해서는 2가지가 필요
    • Ingress 규칙이 적용될 Ingress Controller
    • YAML 파일에서 Ingress로 정의되는 Ingress 리소스

Ingress의 기능 (글/그림 : 주인장 제작)

 

10. Volume Management

👉🏻 Volume Type

  • EmptyDir : Pod와 함께 생성되고, 삭제되는 임시 Volume. Pod 단위로 관리가 되기 때문에 컨테이너가 삭제 혹은 재 시작 되어도 사용 가능
  • HostPath : 로컬 디스크의 경로를 Pod에 Mount해서 사용하는 Volume 방식

PV & PVC 개념 (글/그림 : 주인장 제작)

 

11. Kubernetes Deployment

Kubernetes Deployment Rolling Update (글/그림 : 주인장 제작)

반응형

블로그의 정보

현생이네

현생사는갓생지망생

활동하기