24
Docker集群管理系列一 工具篇 刘光亚 [email protected] Sina Weibo: @platformer

Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

  • Upload
    others

  • View
    28

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker集群管理系列一 工具篇

刘光亚

[email protected]

Sina Weibo: @platformer

Page 2: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

单节点Docker管理

Page 3: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker集群管理

Page 4: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker集群管理

• 需要解决的主要问题

–资源调度

–部署运行

–服务发现

–扩容缩容

–网络隔离

Page 5: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker集群管理工具

• 当前主要工具

– OpenStack

– Google Kubernetes

– Docker Platform

– Fig

– CoreOS

Page 6: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Nova + Docker

• Nova集成

– 通过Nova compute来实现

– 添加了一个新的nova docker drvier

– https://github.com/stackforge/nova-docker

Page 7: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Nova + Docker

• 把Docker作为一种新的Hypervisor来处理,作为一个nova compute的driver – 通过nova scheduler来进行资源调度 – 通过Heat来管理部署运行,服务发现和扩容缩容,所有的

docker container作为VM来处理 – 通过Neutron来管理网络,GRE,vLan,VxLan等等,实现

网络隔离。 – 支持多租户,为不同租户设置不同的quota

• 不能利用Docker的一些比较高级的特性 – 容器关联 – 端口映射 – 不同网络模式的配置

• Host • Bridge • Container • None

Page 8: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

HEAT + Docker

• HEAT集成

–添加了一个新的HEAT

Resource:

DockerInc::Docker::Container

– HEAT docker driver直接与docker

server交互

–没有和nova,cinder,neutron

等交互

Page 9: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

HEAT + Docker

• 优点 –完全兼容docker API

– Docker所有参数可以在heat的template进行设置

• 缺点

–没有资源调度

–没有网络管理

Page 10: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Magnum

• 新项目Magnum

– 为OpenStack添加一个新的服务来管理docker container

– Container Service是Container的一个集中管理服务

– 通过Gantt来进行资源调度,挑选docker server来部署container

– 兼容Kubernetes。

Page 11: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Magnum当前状态

• Framework已经成型

– Heat集成进行中

– Docker集成进行中

– Kubenetes集成进行中

– Gantt集成还未开始

• Docker集成目标

–在Magnum添加Docker Agent来和docker daemon交互

• HEAT集成目标

– 通过Magnum创建k8s集群

– K8s可以部署在虚拟机或者物理机上

– K8s集群创建完成后和Magnum集成,提供container服务

• k8s集成目标

– Magnum兼容k8s所有操作

– 现在主要集中在pod和service

Page 12: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Google Kubernetes

• 可以部署在物理机或者虚拟机甚至Docker Container • Google Compute Engine

– 官方推荐 – 一键安装

• Vagrant with VirtualBox • Rackspace • OpenStack Heat • Azure • vSphere • Digital Ocean

Page 13: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Google Kubernetes

• 主要概念 – Pod:是Kubernetes最基本的部

署调度单元,包含多个container,逻辑上表示某种应用的一个实例。

– Service:是pod的路由代理抽象,用于解决pod的高可用的问题。

– Replication Controller:是pod的复制抽象,用于解决pod的扩容缩容问题。

– Label, 用一组key/val让pod与Service和ReplicationController关联, Label Selector为多个pod提供LB

Page 14: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Google Kubernetes组件

• Master – APIServer:作为kubernetes系统的入口,封装了核心对象的增删改查操作,以RESTFul接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到etcd(一个分布式强一致性的key/value存储)。

– Scheduler:负责集群的资源调度,为新建的pod分配机器。 – controller-manager:负责执行各种控制器,目前有两类:

• endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。

• replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。

• Minion (最新版已改名为node) – kubelet:负责管控docker容器,如启动/停止、监控运行状态等。 – proxy:负责为pod提供代理。

Page 15: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Google Kubernetes

• 网络模型 – 为每一个Minions配置网络

• 10.244.1.1 • 10.244.2.1

– Pod • 每一个Pod有n+1个container • 每一个pod只有一个IP

– Proxy负责load balance,对用户请求进行转发

– Replication Controller监控etcd来获取所有pod信息,根据replication数量来决定创建还是删除pod

Proxy Proxy

10.244.1.2

Redis-

slave-1 Redis-

master

Br:

10.244.1.1

Api server

etcd

Br:

10.244.2.1

10.244.1.3 10.244.2.2

Redis-

slave-2 Redis-

php

10.244.2.3

Replication

Controller

Master

Minion-1 Minion-2

Port 10000

Port 10001

Redis-slave: Port 10001 ->

10.244.1.2:6379 10.244.2.2:6379

Redis-master: Port 10000 ->

10:244.1.3:6379

Port 10000

Port 10001

Page 16: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Google Kubernetes

• 优点 – 当前最好的Docker集群管理工具

– 组件少,容易理解

– 容易安装

• 缺点 – 不能管理Docker Image

– Pod没有floating IP

– 不支持Multi-tenant

– 没有网络隔离

– 不能定义Docker Application之间的依赖关系

Page 17: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Google Kubernetes

Page 18: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker Platform

• 主要组件

– Machine:创建Docker Host

– Compose:服务编排

– Swarm:资源调度

–没有网络管理的组件

Page 19: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker Platform

• Docker Machine – Docker Machine是一个简化

Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

–架构便于第三方集成,可以很方便的开发Machine Driver来和Sotflayer,阿里云等集成。

Page 20: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker Platform

• Swarm – Docker Swarm是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务

– Docker Swarm支持用户创建可运行Docker Daemon的主机资源池,然后在资源池中运行Docker容器。

– Docker Swarm可以管理工作负载并维护集群状态。

– 通过Filter和Strategy来调度,类似于Nova scheduler • Filter用来对机器进行过滤

• Strategy来对filter挑选出来的机器进行按照规则排序

Page 21: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker Platform

• Docker Compose

– Docker Compose可以让用户在集群中部署分布式应用。

– Docker Compose属于一个“应用

层”的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。

–类似于Heat的template和Kubernetes的manifest

Page 22: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

Docker Platform

• Docker Compose一键部署Docker应用

Page 23: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

资源调度

• OpenStack,Kubernetes,Swarm

–先过滤(Filter)

–后排序(Weight)

Page 24: Docker集群管理系列一 - files.meetup.comfiles.meetup.com/14970122/Docker-Cluster-Management-Tools-1.pdf · Docker集群管理工具 •当前主要工具 –OpenStack –Google

系列二:深度解析Kubernetes

Thank You