본문 바로가기

Kubernetes

[Kubernetes] Kubernetes Architecture

반응형

 

1. Kubernetes

컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈 소스 시스템

 

쿠버네티스가 제공하는 기능

 - 서비스 디스커버리와 로드 밸런싱 : 컨테이너에 대한 트래픽이 증가할 떄, 배포가 안정적으로 이워질 수 있도록 네트워크 트래픽을 로드 밸런싱

 - 스토리지 오케스트레이션 : 원하는 스토리지 시스템을 자동으로 마운트할 수 있는 기능 제공

 - 자동화된 롤아웃과 롤백 : 현재 상태를 원하는 상태로 설정한 속도에 따라 변경 

 - 자동화된 빈 배킹 : 각 컨테이너 필요한 CPU 및 메모리 양 설정 

 - 자동화된 복구 : 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며 상태 검사에 응답하지 않는 컨테이너를 종료시킴

 - 시크릿과 구성 관리 : OAuth 토큰 및 SSH 키와 같은 중요한 정보 저장 및 관리

 

2. Kubernetes  클러스터

 

1) Kubernetes  클러스터 구성요소 - Control Plane

 

API Server

 - Kubernetes API를 노출하는 K8S Control Plane의 컴포넌트

 - 사용자 요청의 유효성을 검증하고 요청을 처리

 - JSON 포맷의 요청을 받아서 API 오브젝트를 관리

 - etcd 클러스터에서 데이터를 검색하고 응답으로 제공

 

Controller Manager

 - Pod를 복제하거나 노드 운영 등 각 리소스를 제어하는 컨트롤러들을 감독하고 실행

 - 핵심 제어 루프를 포함하는 데몬

 - 서비스 운영에 필요한 다양한 컨트롤러를 통합

 - Deployment Controller, ReplicaSet Controller, Node Controller 등등

 

Scheduler

 - Node가 할당되지 않은 새로운 Pod를 감시

 - 새로운 Pod가 실행될 최적의 Node를 선택

 - 파드가 실행 가능한 노드를 찾은 다음 점수를 측정한 후 가장 높은 점수를 가진 노드를 선택

 - 리소스 요구사항, 하드웨어/소프트웨어/정책 제한조건, 어피니티 및 안티-어피니티 명세, 데이터 지역성 등을 고려

 

etcd

 - 모든 클러스터의 데이터를 담는 저장소로 사용되는 키-값 저장소

 - 쿠버네티스의 필수 구성 요소

 - etcd는 분산형 합의 기반 시스템

 - 저장된 데이터의 백업 필수

 

2) Kubernetes  클러스터 구성요소 - Data Plane

 

kubelet

 - Worker Node에서 실행되는 에이전트 

 - Pod에서 컨테이너가 확실하게 동작하도록 관리

 - 컨트롤 플레인의 요청을 받아서 실행

 - Node의 상태를 전달

 

kube-proxy

 - Worker Node에서 실행되는 네트워크 프록시

 - Node의 네트워크 규칙을 유지 관리

 - 서비스와 Endpoint에 대한 연결을 구성

 - OS에서 제공하는 패킷 필터링 기능을 사용

 - DaemonSet 형태로 배포

 

Pod

 - Kubernetes의 가장 작은 Object 단위

 - 하나 이상의 컨테이너를 포함

 - 고유의 사설 IP를 할당 받아서 사용

 - Pod 내의 컨테이너는 Pod의 IP를 공유해서 사용

 - 필수 컨테이너는 Side Car 형태로 각 Pod에 동시 배포 가능

    ※ Side Car :

    . 기존 파드의 기능을 향상하기 위해 파드의 파일시스템을 공유하는 형태의 보조 컨테이너를 사이드카 컨테이너

    . 사이드카 패턴은 원래 사용하려고 했던 기본 컨테이너의 기능을 확장하거나 보조하는 용도의 컨테이너를 추가하는 패턴

     

 

반응형