Upload
yongbok-kim
View
2.824
Download
5
Embed Size (px)
Citation preview
Introduce KubernetesMade by Yongbok Kim (ruo91)
# 0012015.09.05
Language: Ko-rean
What is Kubernetes?
Linux Container 를 관리 하기 편하도록
# 002
What is Kubernetes?
Linux Container 를 관리 하기 편하도록
구글이 만든 오픈소스 !
# 003
What is Kubernetes?
Linux Container 를 관리 하기 편하도록
구글이 만든 오픈소스 !
CaaS(Container as a Service)!
# 004
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 005
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 006
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 007
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 008
koo-ber-net-ees
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 009
koo-ber-net-ees쿠버네티스
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 010
koo-ber-net-ees쿠버네티스
혹은
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 011
koo-ber-net-ees쿠버네티스
혹은
k-eights
What is Kubernetes?그럼 어떻게 발음하나요 ?
# 012
koo-ber-net-ees쿠버네티스
혹은
k-eights케이에잇츠
What is Kubernetes? # 013
그냥 ...
What is Kubernetes? # 014
그냥 ...
‘ 쿠버네티스’로 합시다 !
왜 만들었어요 ? # 015
구글 규모만 봐도 답 나오죠 .
왜 만들었어요 ? # 016
구글 규모만 봐도 답 나오죠 .
관리 할 것이 많아서요 !
왜 만들었어요 ? # 017
그래서 구글은
왜 만들었어요 ? # 018
그래서 구글은
Large Scale,
왜 만들었어요 ? # 019
그래서 구글은
Large Scale, High Availability
왜 만들었어요 ? # 020
그래서 구글은
Large Scale, High Availability, Batch Job
왜 만들었어요 ? # 021
그래서 구글은
Large Scale, High Availability, Batch Job
환경을 위해
왜 만들었어요 ? # 022
그래서 구글은
Large Scale, High Availability, Batch Job
환경을 위해
Borg 라는 프로젝트를 진행하게 됩니다 .
왜 만들었어요 ? # 023
Borg 관련 논문http://research.google.com/pubs/pub43438.html
왜 만들었어요 ? # 024
다년간 Borg 를 통해 배운 운영 노하우를
Kubernetes 에 녹여 만들었고
2014 년 5~6 월 경에
오픈 소스로 발표 하게 된 것 입니다 .
왜 만들었어요 ? # 025
굳이 .. 오픈 한 이유를 따지자면
우린 이렇게 자랑 할거다 ?( 늬들도 써봐 ! 좋아 !)
그래서 오픈 소스로 오픈 한다 !이런 이유 일듯 .. 개인적인 생각 입니다 .
어떻게 구성이 되어있죠 ? # 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 개 이상이 되면 하나를 죽이고 , 지정 된 만큼의 수를 지키게 합니다 .
어떻게 구성이 되어있죠 ? # 027
2. MinionMinion = 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 입니다 .
어떻게 구성이 되어있죠 ? # 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 를 사용하며 , 여기에 정보를 저장 합니다 .
Kubernetes Architecture # 029
어떻게 동작하는지
Architecture 를
살펴 보도록 하죠 !
# 030
API Server
# 031
API Server
Scheduler
# 032
API Server
Scheduler
# 033
API Server
Scheduler
ControllerManager
# 034
API Server
Scheduler
ControllerManager
# 035
API Server
Scheduler
ControllerManager
# 036
API Server
Scheduler
ControllerManager
Master
# 037ETCD
API Server
Scheduler
ControllerManager
Master
# 038ETCD
API Server
Scheduler
ControllerManager
ETCD
Master
# 039ETCD
API Server
Scheduler
ControllerManager
ETCD
ETCD
Master
# 040ETCD
API Server
Scheduler
ControllerManager
ETCD
ETCD
Master
# 041ETCD
API Server
Scheduler
ControllerManager
ETCD
ETCD
Clus-ter
Master
# 042ETCD
API Server
Scheduler
ControllerManager
ETCD
ETCD
Clus-ter
Master
# 043ETCD
API Server
Scheduler
ControllerManager
ETCD
ETCD
Clus-ter
Master
# 044ETCD
API Server
Scheduler
ControllerManager
ETCD
ETCD
Clus-ter
Master
# 045ETCD
API Server
Scheduler
ControllerManager
Minion
ETCD
ETCD
Minion
Clus-ter
Master
# 046ETCD
API Server
Scheduler
ControllerManager
Minion
ETCD
ETCD
Minion
Clus-ter
Master
# 047ETCD
API Server
Scheduler
ControllerManager
Minion
Kubelet
ETCD
ETCD
Minion
Kubelet
Clus-ter
Master
# 048ETCD
API Server
Scheduler
ControllerManager
Minion
Kubelet
ETCD
ETCD
Minion
Kubelet
Clus-ter
Master
Kube Proxy
Kube Proxy
# 049ETCD
API Server
Scheduler
ControllerManager
Minion
Kubelet
ETCD
ETCD
Minion
Kubelet
Clus-ter
Master
Kube Proxy
Kube Proxy
# 050ETCD
API Server
Scheduler
ControllerManager
Minion
Kubelet Kube Proxy
ETCD
ETCD
Minion
Kubelet Kube Proxy
Clus-ter
Master
# 051ETCD
API Server
Scheduler
ControllerManager
Minion
Kubelet Kube Proxy
ETCD
ETCD
Minion
Kubelet Kube Proxy
Clus-ter
Master
# 052ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Kubelet Kube Proxy
ETCD
ETCD
Minion
Kubelet Kube Proxy
Clus-ter
Master
# 053ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Kubelet Kube Proxy
ETCD
ETCD
Minion
Kubelet Kube Proxy
Clus-ter
Master
# 054ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Kubelet Kube Proxy
ETCD
ETCD
Minion
Kubelet Kube Proxy
Clus-ter
Master
# 055ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Kubelet Kube Proxy
ETCD
ETCD
Minion
Kubelet Kube Proxy
Clus-ter
Master
# 056ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod Pod
Kubelet Kube Proxy
ETCD
ETCD
Minion
Pod Pod
Kubelet Kube Proxy
Clus-ter
Master
# 057ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod Pod
Kubelet Kube Proxy
ETCD
ETCD
Minion
Pod Pod
Kubelet Kube Proxy
Clus-ter
Master
# 058ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master
# 059ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master
# 060ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master
# 061ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master
# 062ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master
# 063ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Web UI
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master
# 064ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Web UI
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master
Kubernetes HA Architecture # 065
Master 서버를 하나만 설정 한다면
Kubernetes HA Architecture # 066
Master 서버를 하나만 설정 한다면
장애 발생시 대처가 난감 하겠죠 ?
Kubernetes HA Architecture # 067
그래서 ,
HA 구성을 해야 합니다 .
KubernetesArchitecture
Made by ruo91
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master# 068
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
KubernetesArchitecture
Made by ruo91
# 069
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy
KubernetesArchitecture
Made by ruo91
# 070
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 071
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 072
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 073
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 074
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 075
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 076
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 077
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
KubernetesArchitecture
Made by ruo91
# 078
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
Web UI
KubernetesArchitecture
Made by ruo91
# 079
ETCD
API Server
Scheduler
ControllerManager
kubelctl
Minion
Pod
cAdvisor
Pod
Nginx
Kubelet Kube Proxy
ETCD
ETCD
VRRP
Internet
Minion
Pod
cAdvisor
Pod
Redis
Kubelet Kube Proxy
Clus-ter
Master xN
HAProxy HAProxy
Web UI
KubernetesArchitecture
Made by ruo91
# 080
Kubernetes Network # 081
Kubernetes 에서는
Kubernetes Network # 082
Kubernetes 에서는
4 가지 정도의
Kubernetes Network # 083
Kubernetes 에서는
4 가지 정도의
네트워크 문제가
Kubernetes Network # 084
Kubernetes 에서는
4 가지 정도의
네트워크 문제가
존재합니다 .
Kubernetes Network # 085
첫째 , Container 와 Container 의 통신
Kubernetes Network # 086
첫째 , Container 와 Container 의 통신
둘째 , Pods 간의 통신
Kubernetes Network # 087
첫째 , Container 와 Container 의 통신
둘째 , Pods 간의 통신
셋째 , Pod 와 서비스간의 통신
Kubernetes Network # 088
첫째 , Container 와 Container 의 통신
둘째 , Pods 간의 통신
셋째 , Pod 와 서비스간의 통신
넷째 , 외부와 내부간의 통신
Kubernetes Network # 089
이런 문제를 해결 하기 위해
Kubernetes Network # 090
이런 문제를 해결 하기 위해
다음과 같은 것들로
Kubernetes Network # 091
이런 문제를 해결 하기 위해
다음과 같은 것들로
해결이 가능합니다 .
Kubernetes Network # 092
OpenVSwitch 를 사용하는 방법 .
Link: https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/admin/ovs-networking.md
Kubernetes Network # 093
Flannel - Overlay Network 를 사용하는 방법 .
Link: https://github.com/coreos/flannel
Kubernetes Network # 094
Weave - Overlay Network 를 사용하는 방법 .
Link: https://github.com/weaveworks/weave
Kubernetes Network # 095
Weave - Overlay Network 를 사용하는 방법 .
Link: https://github.com/weaveworks/weave
Kubernetes Network # 096
Calico - BGP 를 사용하여 Real IP 를 할당 하는 방법 .
Link: http://docs.projectcalico.org/en/0.13/arch-overview.html
Kubernetes Network # 097
Linux Bridge 를 사용하는 방법 .Link: http://blog.oddbit.com/2014/08/11/four-ways-to-connect-a-docker/
Kubernetes 설치법 # 098
관련 링크http://kubernetes.io/
https://www.yongbok.net/blog/google-kubernetes-container-cluster-manager/
# 099
Thank you!