1. 쿠버네티스란?
- 오픈 소스 플랫폼
- 오케스트레이션 시스템
- 컨테이너화된 워크로드와 서비스를 관리
는 공식 홈페이지에 소개 내용이지만, 내가 이해한 내용은 이렇다.
- 런타임 의존성과 함께 애플리케이션을 패키징하는 컨테이너를 많이 쓰기 시작한다. -> 컨테이너 런타임을 지원하면 어디에서 실행하던 동일한 동작을 보장하니까
- 하지만 컨테이너는 변경이 불가하다. 즉 애플리케이션의 업데이트가 발생하면 새로 이미지를 빌드 해야 한다.
- 쿠버네티스는 이러한 경우 서비스 중단 없이 업데이트를 가능하게 해주고, 이 밖에 운영 측면의 스케일링, 리소스 관리 등을 해주는 녀석이다.
2. 왜 쿠버네티스를 사용하지?
- high Availability = no downtime
- Scalability
- High Performance
- Disaster recovery
위 장점때문에 사람들이 많이 사용하는 것 같은데 구성이 멀티 클러스터로 되어있기 때문이라고 생각한다면 저 장점을 더 이해하기 쉬울 것 같다.
3. 쿠버네티스 아키텍쳐
- 일반적인 쿠버네티스 배포 → 쿠버네티스 클러스터 생성
- 쿠버네티스 클러스터
- 모든 클러스터는 최소 한 개의 워커 노드, 1개의 마스터 노드를 가짐
- 워커 노드
- 동작중인 파드를 유지시키고, 쿠버네티스 런타임 환경을 제공하며 모든 노드 상에서 동작
- 컨트롤 플레인 = 마스터 노드
- 워커노드와 클러스터 내 파드를 관리한다
- 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 여러 노드를 실행하므로 내결함성과 고가용성이 제공됨
컨트롤 플레인
- 주요 컴포넌트
- kube-apiserver
- 쿠버네티스 컨트롤 플레인의 프론트 엔드
- UI, API, CLI 를 제공
- etcd
- 모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소
- 키-벨류 저장소
- kubernetes backking stroe
- kube-scheduler
- 노드가 배정되지 않은 새로 생성된 파드를 감지
- 실행할 노드를 선택하는 컨트롤 플레인 컴포넌트
- ensure pods placement
- 서버의 리소스또한 감지한다. 몇번 노드에서 메모리 30% 쓰고 뭐 이런 정보들
- kube-controller-manager ( cm )
- 컨트롤러 프로세스를 실행하는 컨트롤 플레인 컴포넌트
- 4가지 구성요소
- 노드 컨트롤러: 노드가 다운되었을때 통지와 대응에 관한 책임
- 레플리케이션 컨트롤러 : 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드들을 유지시켜주는 책임
- 엔드포인트 컨트롤러 : 엔드포인트 오브젝트를 채움 ( 서비스와 파드 연결 )
- 서비스 어카운트 & 토큰 컨트롤러 : 새로운 네임스페이스에 대한 기본 계정과 api 접근 토큰을 생성
- keeps track of whats happening in the cluster
- cloud-contgroller-manager (ccm)
- 클라우드 별 컨트롤 로직을 포함하는 쿠버네티스 컨트롤 플레인 컴포넌트
- 3가지 구성요소
- 노드 컨트롤러 : 노드가 응답을 멈춘 후 클라우드 상에서 삭제되었는지 판별하기 위해 클라우드 제공 사업자에게 확인
- 라우트 컨트롤러 : 기본 클라우드 인프라에 경로를 구성하는 것
- 서비스 컨트롤러 : 클라우드 제공 사업자 로드밸런서를 생성, 업데이트, 그리고 삭제 하는 것
- kube-apiserver
워커 노드
- 주요 컴포넌트
- kubelet
- 클러스터 각 노드에서 실행되는 에이전트
- 파드에서 컨테이너가 동작하도록 관리
- kube-proxy
- 클러스터의 각 노드에서 실행되는 네트워크 프록시
- 노드의 네트워크 규칙을 유지 관리
- 컨테이너 런타임
- 컨테이너 실행을 담당하는 소프트 웨어
- 컨테이너 런타임 인터페이스를 구현한 모든 소프트웨어 지원
- kubelet
'Data Engineer' 카테고리의 다른 글
Docker Compose를 이용하여 Apache kafka (카프카) 클러스터 구축 (0) | 2022.08.19 |
---|---|
Apache kafka (카프카) 기초 (1) | 2022.08.19 |
pyspark 기초 (1) (0) | 2021.10.03 |
[python] dataprep을 이용하여 EDA (데이터 분석) 레포트 쉽게 만들기 (0) | 2021.06.06 |
[airflow] HA - health 체크를 이용한 운영 (0) | 2021.06.05 |