Cloud/Kubernetes
Kubernetes) Kubernetes 개요
Adım Kim
2022. 10. 7. 00:08
Application Archetecture
- Monolithic Architecture
- application 전체가 하나의 운영체제 프로세스로 실행된다.
- 하나의 객체로 개발, 배포, 관리를 담당한다.
- 하나의 변경 사항을 적용하기 위해 전체를 다시 빌드/테스트/배포 해야한다.
- Microservice Architecture
- 각 micro service는 독립적인 프로세스로 실행되며 API로 다른 miocro service와 통신한다.
- 새로 추가되거나 변경 사항이 발생하면, 해당 서비스만 빠르게 빌드/테스트/배포 할 수 있다.
- resource가 더 필요한 서비스만 별도 확장 가능하다.
- Microservice Architecture의 구성요소는 독립적인 방식으로 개발한다.
- 각 기능이 micro service 단위로 나뉘어저 구성요소의 수가 증가하고 micro service간의 종속성 관리가 어려운 단점이 있다.
실제 개발환경
- 개발, 배포하는 구성요소와 상관없이 개발자와 운영자가 해결해야할 문제는 application 실행환경이 매번 다른 환경이라는 점이다.
- 개발자는 새로운 기능, 사용자 경험 향상에 중요도를 두며, 운영자는 시스템 보안, 리소스 사용율 측면에 중요도를 둔다.
- Kubernetes를 사용하면 개발자는 특정 인프라 관련 서비스를 application에 구현하지 않아도 되고 실제 기능개발에 집중할 수 있다.
- Kubernetes를 사용하면 시스템 관리자(운영자)는 kubernetes가 application을 재배치하고 조합함으로서 리소스를 훨씬 효율적으로 관리할 수 있고 장애가 발생하더라도 자동으로 처리해준다.
Kubernetes 란?
- container화된 application을 쉽게 배포/관리할 수있는 orchestraion 도구다.
- 구글이 내부적으로 사용하던 container 관리도구를 오픈소스화 하여 공개한 container orchestration 도구다.
- 현재는 CNCF 재단이 관리 운영한다.
- kubernetes는 크게 마스터 노드, 워커노드로 구성되며 이 둘의 집합을 클러스터라고 한다.
- 마스터노드 (Control Plane)는 kubernetes 시스템을 제어하고 관리한다.
- 워커노드는 실제 배포되는 container application이 실행된다.
Kubernetes 구성요소
- 마스터 노드 (Control Plane)
- 클러스터 제어, 워크노드 관리
- kube-apiserver
- 사용자 상호작용 수행
- Kubernetes 제어명령 수신
- API 명령 수신
- kube-scheduler
- 새로운 POD(container) 생성 감지
- 실행시킬 워커노드를 선택
- etcd
- 클러스터의 모든 데이터 보관
- 고가용성을 보장하는 Key-Value 저장소
- 노드와 클러스터의 리소스 정보 등을 저장
- kube-controller-manager
- deployment와 같은 리소스 컨트롤을 관리
- API 서버를 통해 클러스터 공유상태 감지
- 현재 상태를 원하는상태로 이행하는 컨트롤 루프 관리
- cloud-controller-manager
- public cloud와 연동하여 로드밸런서나 디스크볼륨 같은 자원관리
- 워커 노드
- 컨테이너화된 application을 실행한다.
- kubelet
- 각 노드에서 실행되는 에이전트
- container run-time을 관리하고 상태를 모니터링
- POD에서 container가 확실하게 동작하도록 관리
- kube-proxy
- 각 노드에서 실행되는 네트워크 프록시
- Service개념 구현부
- 서로다른 노드에 있는 POD간 통신이나 POD와 인터넷 사이의 트래픽라우팅
- container run-time
- container 제어기능(실행-중지-삭제) 주로 Docker를 사용한다.
- CRI(Container Run-time Initiative)로 공통 container run-timer 규격이다.
- Kubernetes를 사용하기 위한 기본환경구성은 클러스터 생성을 의미하고 클러스터는 여러개의 클러스터를 생성할 수 있다.
참고 자료
쿠버네티스 페이지 : https://kubernetes.io/
Production-Grade Container Orchestration
Production-Grade Container Orchestration
kubernetes.io
CNCF 페이지 : https://www.cncf.io/
Cloud Native Computing Foundation
Cloud Native Computing Foundation (CNCF) serves as the vendor-neutral home for many of the fastest-growing open source projects
www.cncf.io