반응형
Kubernetes 가 필요한 이유
- Monolithic 어플리케이션 환경에서 MS(Microservice)로 전환이 되면서 worker node가 많아짐으로 인해 container 관리자가 필요하게 되었다.
- 쿠버네티스는 컨테이너 중심의 관리 환경을 제공한다. 이 환경은 사용자 워크로드를 위해서 컴퓨팅, 네트워킹 및 스토리지ㅣ 인프라 스트럭처를 오케스트레이션 한다.
Container Ecosystem
- Layer 1(Physical Infrastructure): 네트워크, 스토리지 장비와 같은 하드웨어 및 Bare metal 환경
- Layer 2(Virtual Infrastructure)
- Layer 3(Operating System)
- Layer 4(Container Engine) : Docker, Rocket, RunC(OCI), Osv, LXC, LXD
- Layer 5(Orchestration/Scheduling Service Model): Kubernetes, Docekr Swarm, Marathon/Mesos
- Layer 6(Development Workflow Opinionated Containers): OpenShift, Deis
OpenShift
- 기업에 Docker와 Kubernetes를 제공하는 컨테이너 애플리케이션 플랫폼
- 오픈시프트는 사용 중인 애플리케이션 아키텍처와 관계없이 거의 모든 인프라(퍼블릭 또는 프라이빗)에서 어플리케이션을 쉽고 빠르게 구축, 개발 및 배포 가능
- 온프레미스, 퍼블릭 클라우드, 호스티드 중 어떤 IT환경이든 경쟁업체보다 빨리 우수한 아이디어를 제품화 할 수 있음.
- 신속한 애플리케이션 개발을 위해 도커 컨테이너와 DevOps(데브옵스) 도구를 사용하여 Kubernetes 를 지원하는 운영환경 제공
Kubernetes 특징
- 시스템은 마스터 노드와 여러개의 워크노드로 구성됨
- 개발자가 애플리케이션 매니패스트를 마스터에 제출하면 쿠버네티스는 이를 워커 노드 클러스터에 배포
- 개발자는 물론 시스템 관리자에게도 구성요소가 어느 노드에 실행되는지 중요하지 않음
- 쿠버네티스는 계속 증가하고 있는 엄청난 수의 서비스와 기능이 포함된 플랫폼
- 핵심 기능은 인프라 전체에 걸쳐 컨테이너에서 작업 부하를 스케줄링 할 수 있는 능력
Kubernetes 기능
- Automatic binpacking: 가용성에 대한 희생 없이, 리소스 사용과 제약 사항을 기준으로 자동으로 컨테이너 스케쥴링
- Self-healing: 자동으로 문제가 발새한 노드의 컨테이너를 대체
- Horizontal scaling: CPU와 메모리와 같은 리소스 사용에 따라 자동으로 애플리케이션 확장, 사용자 정의측정값 기준으로 한 동적 확장 가능
- Service discovery and Load balancing: container에 고유한 IP부여. 여러 개의 Container를 묶어 단일 service로 부여하는 경우 단일 name으로 접근하도록 로드 밸런싱 제공
- Automatic rollouts and rollbacks: 다운타임 없이 애플리케이션의 새로운 버전 및 설정에 대한 롤아웃/롤백 기능
- Secret and configuration management: 애플리케이션의 secret과 configuration 정보를 이미지와 독립적으로 구분하여 별도의 이미지 재생성 없이 관리
- Storage orchestration: 소프트웨어 정의 저장장치를 기반으로 로컬, 외부 및 저장소 솔루션 등을 동일한 방법으로 컨테이너에 마운트 가능
- Batch execution: CI 워크로드와 같은 Batch성 작업 지원, crontab 형식으로 스케줄링도 가능
Kubernetes 리소스
리소스 유형 | 약자 |
---|---|
Componentstatuses | cs |
Events | ev |
Endpoints | ep |
Horizontalpodautoscaler | hpa |
Limitranges | limits |
Nodes | no |
Namespaces | ns |
Ingress | ing |
Pods | po |
Persistentvolumes | pv |
Persistentvolumesclaims | pvc |
Replicationcontrollers | rc |
Services | svc |
Kubernetes components
- Master Components
- API server: 쿠버네티스 REST API. 모든 데이터를 etcd 클러스터에 저장하므로 쉽게 수평 확장 가능
- etcd: 분산데이터 저장소. 쿠버네티스는 이것을 사용해 전체 클러스터 상태를 저장한다. 규모가 작고 일시적인 클러스터의 경우에는 etcd 단일 인스턴스가 다른 마스터 컴포넌트와 함께 동일한 노드에서 동작 가능. 일반적으로 이중화 및 고가용성을 위해 3~5개 etcd 클러스터를 갖기도 함
- controller manager: 컨트롤러 매니저는 API를 사용해 클러스터의 상태를 감시하고, 클러스터를 원하는 상태로 조정. 컨트롤러 매니저에는 replication, pod, service, endpoint controller등 포함
- scheduler: Kube scheduler는 node에 pod를 스케줄링 하는 역할 담당.
- DNS: 모든 서비스는 DNS 이름을 가지며 Pod역시 DNS 이름을 가짐. 자동검색(automatic discovery)에 유용
- Worker Node Components
- kube proxy: 각 노드에서 네트워크 관리 업무 수행. TCP와 UDP 포워딩을 수행하며 환경변수나 DNS를 통해 클러스터 IP를 갖게됨
- kubelet: 쿠버네티스 대포 노드. 마스터 컴포넌트와 통신을 수행하며 실행중인 파드를 관리하고 감독.
- API 서버에서 Pod secret 다운로드
- 볼륨 마운트
- 파드의 컨테이너 실행
- Node & Pod 상태보고
- 실행중인 컨테이너의 활성 여부조사
반응형
'클라우드 > 쿠버네티스' 카테고리의 다른 글
Pod 배포 전략 및 기법 (0) | 2020.07.19 |
---|