Kubernetes
1. Kubernetes (쿠버네티스)
(1) 쿠버네티스는 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구
(2) 비슷한 도구로는 메소스, 도커스웜 등이 있음
(3) 컨테이너 오케스트레이션 도구라고도 함
(4) 많은 수의 컨테이너를 협조적으로 연동시키기 위한 통합 시스템
(5) 컨테이너를 다루기 위한 API 및 명령행 도구 등이 함께 제공됨
(6) 도커 호스트 관리, 서버 리소스의 여유를 고려한 컨테이너 배치, 스케일링, 여러 개의 컨테이너 그룹에 대한 로드 밸런싱, 헬스 체크 등의 의 기능을 갖추고 있음
(7) 쿠버네이트 리소스 : 노드, 네임스페이스, 파드
2. Cluster

(1) Kubernetes cluster: 쿠버네티스의 여러 리소스를 관리하기 위한 집합체
(2) Node : 클러스터의 관리 대상으로 등록된 도커 호스트로, 도커 컨테이너가 배치되는 대상
(3) Kubernetes cluster 전체를 관리하는 서버인 마스터가 적어도 하나 이상 있어야 함 => 클러스터가 작동하기 위한 최소 조건
(4) 실제 환경에서는 절대 하나로 클러스터를 구성하지 않으며, 최소 3개 이상의 마스터 노드를 갖고 있음
3. Master Node
(1) Kubernetes Cluster 전체를 컨트롤 하는 역할로 API서버, 스케쥴러, 컨트롤러 매니저, etcd로 구성됨
(2) API (명령, 통신 관련) : 모든 명령과 통신을 관리. 모든 기능은 REST API로 제공하고 그에 따른 명령을 처리
(3) Etec (정보 저장)
- Cluster의 데이터 베이스 역할로 서버로 설정값이나 클러스터의 상태를 저장
- 분산형 Key/Value 향식
- 오픈소스
- 빠른 응답과 신뢰성 등의 장점
(4) 스케줄러(리소스들을 할당할지 선정): pod 나 service들을 적절한 노드에 저장하게 정리해주는 역할
(5) 컨트롤러 매니져(RS,SC,VC,NC 관리): Replica controller, Service controller, Volume Controller, Node controller를 생성하고 각 노드에 배포하여 관리
4. Node
(1) Master Noded에 의해 주어진 명령어를 받고 실제 워크로드에 생성하여 서비스하는 컴포넌트
(2) Kubelet, Kube-proxy, cAdvisor 와 컨테이너 런타임으로 구성
(3) Kubelet(통신)
- 노드에 배포되는 에이전트
- 마스터의 API와 통신하면서 노드가 수행해야 할 명령을 받아 수행
- 반대로 노드의 상태 등을 마스터로 전달하는 역할을 함
(4) Kube-proxy(노드 안 트래픽 정리)
- 노드로 들어오는 네트워크 트래픽을 적절한 컨테이너로 라우팅
- 로드 밸런싱등을 노드로 들어오고 나가는 네트워크 트래픽을 프록시 함
- 노드와 마스터 간의 네트워크 통신을 관리
(5) container runtime
- pod를 통해 배포된 컨테이너를 실행하는 역할
- docker container, rkt, hyper container 등이 있음
(6) cAdvisor(모니터링)
- 각 노드에서 기동되는 모니터링 에이전트
- 노드 내에서 가동되는 컨테이너들의 상태와 성능등의 정보를 수집하여 마스터에 전달
5. Namespace
(1) 클러스터 안의 가상 클러스터
(2) 클러스터 처음 구축 시 default, docker, kube-public, kube-system의 네임스페이스 4개가 이미 만들어져 있음
(3) 전체 클러스터에서 특정 이름으로 클러스터 영역을 구분하는 역할
6. Pod


(1) 컨테이너가 모인 집합체의 단위, 적어도 하나 이상의 컨테이너로 이루어짐
(2) 쿠버네티스에서는 결합이 강한 컨테이너를 파드로 묶어 일괄 배포
(3) 한 pod 안의 컨테이너는 모두 같은 노드에 배치
(4) 리버스 프록시 역할을 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 Ngnix와 그 뒤에 위치할 애플리케이션 컨테이너를 함께 팟으로 구성하는 것이 일반적