반응형
Notice
Recent Posts
Recent Comments

05-06 15:43
관리 메뉴

SaevOps

[쿠버네티스] 아키텍처 및 구성도 본문

클라우드/Kubernetes

[쿠버네티스] 아키텍처 및 구성도

세브웁스 2022. 11. 23. 14:32
반응형

컨테이너란?

- SW가 필요로 하는 라이브러리와 설정만 포함
- s/w 실행에 필요한 것을 패키지로 구성하여 독립적인 컨테이너에 저장


# 쿠버네티스 배경

 

1. CGROUPS(control groups)


- 프로세스 별로 자원(CPU, Memory, Disk I/O,..) 할당 및 제어

2. CHROOT (change root)
- 프로세스에 대한 파일시스템 격리
- 사용자 root 경로를 바꿔줌 (/ -> /home/user1)


3. NAMESPACE

- 프로세스 환경 격리 (논리적으로 격리)
- 서로의 환경에 영향을 끼치지 않음


# 컨테이너 환경의 특징

1. 확장성
2. 일관성
3. 빠른동작
-> OTT 서비스의 경우 빠른 처리가 필요
-> 무중단 수정 가능
4. 공간절약


# 환경에 따른 구성도

 <베어메탈>

베어메탈 - OS - Bins(이진 파일)/Libs(비휘발성 데이터) - 앱
- 자원 격리 불가
- OS 간 호환성 문제
- 애플리케이션 자동 확장 불가


<가상화 환경>

가상화 - OS - 하이퍼바이저 - VM(Geust OS)
- 자원 격리
- 하이퍼바이저 부화
- 이기종 VM 기술 간 호환성 문제
- 애플리케이션 자동 확장 불가


<컨테이너 환경>

하드웨어 장비 - OS - 커널 - 컨테이너
- 자원 격리
- 표준 컨테이너 기술로 호환성 제공
- 애플리케이션 자동 확장 가능
- 하이브리드 클라우드 환경


# 쿠버네티스를 사용하는 이유


1. 도커만 사용할 시 네트워크적으로도 격리됨 (장점이자 단점)
2. 회사 내부 웹만 쓸 때는 사용해도 되나, 사용하는 서비스가 많을수록 컨테이너 관리가 어려워짐


# 오케스트레이션 필요성

- 여러 개의 컨테이너들을 통합
- 네트워크/스토리지/컴퓨트 자원 관리
- 빠르고 유연한 컨테이너 증감
- 동적 컨테이너 연결 및 부하분산


쿠버네티스 장애원인 1위 : 네트워크 병목


# 쿠버네티스 특징 (22년 11월 23일 기준)

-Automated rollouts and rollbacks
-Service discovery and load balancing
-Storage orchestration
-Self-healing
-Secret and configuration management
-Automatic bin packing
-Batch execution
-Horizontal scaling
-IPv4/IPv6 dual-stack
-Designed for extensibility


# 쿠버네티스 아키텍처
 

마스터 노드 (컨트롤 플레인 노드)

API Server
- 쿠버네티스 컨트롤 플레인에 대한 프론트 엔드
etcd
- 클러스터 정보를 담는 key-value 저장소
- 머신의 분산된 시스템 또는 클러스터의 설정 공유, 서비스 검색 및 스케쥴러 조정을 위한 
일관된 오픈소스, 분산형 키-값 저장소
- 3 배수 구성 추천
- 제일 중요한 구성
Scheduler
- 새로 생성된 파드를 리소스 요건에 따른 노드 배정
Controller-manager
- 하위 컨트롤러를 구동하는 컴포넌트
- replica, ...
Cloud-controller-manager
- 클라우드 벤더에 특화된 코드 수행


워커 노드

kubelet
- 노드에서 실행되는 에이전트
kube-proxy
- 호스트 상의 네트워크 규칙을 유지하고 연결에 대한 포워딩 수행
pod
- 컨테이너의 논리적 모음
- 1파트 1 컨테이너 권장 - 네트워크 관리를 위해서, 쿠버네티스는 파드를 올렸다 내렸다 함
Container Runtime
- 컨테이너의 동작을 책임지는 소프트웨어

# 구성요소
Deployment
ReplicaSet: 
 - 복제 개수
StatusfulSet: 
 - 상태 유지 
 - ex) 데이터베이스를 사용하는 경우
DaemonSet: 
 - 노드마다 필수적으로 있어야 하는 것 
 - ex ) Log
 Persistent Volume Claim
- 볼륨을 얼마나 쓰겠다 하는 요청
- if Persistent Volume Claim > Persistent Volume : Panding (기다림)
- 따라서 Claum은 작게 둠 그래도 디스크를 가져오기 때문에
- Storage Class로 지정 시 둘 다 사용 가능

반응형
Comments