22. # 022
그래서 구글은
Large Scale, High Availability, Batch Job
환경을 위해
Borg라는 프로젝트를 진행하게 됩니다.
23. # 023
Borg 관련 논문
http://research.google.com/pubs/pub43438.html
24. # 024
다년간 Borg를 통해 배운 운영 노하우를
Kubernetes에 녹여 만들었고
2014년 5~6월 경에
오픈 소스로 발표 하게 된 것 입니다.
25. # 025
굳이.. 오픈 한 이유를 따지자면
우린 이렇게 자랑 할거다?
(늬들도 써봐! 좋아!)
그래서 오픈 소스로 오픈 한다!
이런 이유 일듯.. 개인적인 생각 입니다.
26. # 026
Kubernetes는 Master, Minion, Key/Value 저장소로 나뉩니다.
각각의 역할을 살펴 보도록 하겠습니다.
1. Master
1.1 API Server
Master의 중심이 되는 것이 API 서버이며,
인증 및 Pods, Services, Replication Control 등등의 역할을 담당 합니다.
1.2 Scheduler
kubectl 명령어를 통해 지시 받은 작업을 스케줄러가 이를 가지고 있다가
API 서버로 보내주는 역할을 합니다.
1.3 Controller Manager (Replication Controller)
Pods의 Replication 부분을 모니터링하고, 여기에 변경 사항이 있으면 API Server를 통해
Pods의 증감/감소 설정을 하는 역할을 담당 합니다.
예를 들어 Pods의 replicas 수가 10일 경우 9개가 되면 자동으로 10개를 맞춰 주고,
11개 이상이 되면 하나를 죽이고, 지정 된 만큼의 수를 지키게 합니다.
27. # 027
2. Minion
Minion = Server 또는 Node 라고 이해 하면 됩니다.
2.1 Docker
LXC(LinuX Containers)를 쉽게 사용할 수 있도록 만들어졌고, HostOS의 커널을 그대로 사용하되,
HostOS와 Container OS의 다른 부분만을 패키징 하여 독립 된 환경을 제공 해주는 도구 입니다.
2.2 Kubelet
Minion을 제어하는 agent이며, 단일 Container 또는 Pods를 생성 해주는 역할을 담당 합니다.
3.3 Kube Proxy
간단한 L3 프록시이며, kubelet에서 생성한 Pods의 Container 들의 RR(Round Robin)을
담당하는 역할을 합니다.
3.4 Pod
여러 Container들의 묶음이 Pod 입니다.
28. # 028
3.5 cAdvisor
Container의 자원을 모니터링 하는 소프트웨어입니다.
단일 Container 또는 Pods에 대해 모니터링하고, 이를 Kubelet에 전달 합니다.
3.6 Label
Pods에 이름을 붙이는 것으로, 하나의 Pod에 여러 가지의 Label을 붙일 수가 있습니다.
예를 들면 환경을 나타내는 ‘Production’, ‘Development’, ‘Staging’
또는 역할을 나타내는 ‘Frontend’, ‘Backend’, ‘Worker’, ‘Logger’를 붙일 수가 있습니다.
3. Key / Value Store
키와 값을 저장하는 저장소 입니다.
Kubernetes에서는 CoreOS의 ETCD를 사용하며, 여기에 정보를 저장 합니다.
68. Kubernetes
Architecture
Made by ruo91
ETCD
API Server
Scheduler
Controller
Manager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Cluster
Master
# 068