introduce google kubernetes

Post on 15-Apr-2017

2.824 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 # 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/

# 099

Thank you!

top related