Upload
guangya-liu
View
1.016
Download
0
Embed Size (px)
Citation preview
单节点Docker管理
Docker集群管理
Docker集群管理
• 需要解决的主要问题
–资源调度
–部署运行
–服务发现
–扩容缩容
–网络隔离
Docker集群管理工具
• 当前主要工具
– OpenStack
– Google Kubernetes
– Docker Platform
– Fig
– CoreOS
Nova + Docker
• Nova集成
– 通过Nova compute来实现
– 添加了一个新的nova dockerdrvier
– https://github.com/stackforge/nova-docker
Nova + Docker
• 把Docker作为一种新的Hypervisor来处理,作为一个nova compute的driver– 通过nova scheduler来进行资源调度– 通过Heat来管理部署运行,服务发现和扩容缩容,所有的
docker container作为VM来处理– 通过Neutron来管理网络,GRE,vLan,VxLan等等,实现
网络隔离。– 支持多租户,为不同租户设置不同的quota
• 不能利用Docker的一些比较高级的特性– 容器关联– 端口映射– 不同网络模式的配置
• Host• Bridge• Container• None
HEAT + Docker
• HEAT集成
–添加了一个新的HEAT
Resource:
DockerInc::Docker::Container
– HEAT docker driver直接与docker
server交互
–没有和nova,cinder,neutron
等交互
HEAT + Docker
• 优点–完全兼容docker API
– Docker所有参数可以在heat的template进行设置
• 缺点
–没有资源调度
–没有网络管理
Magnum
• 新项目Magnum
– 为OpenStack添加一个新的服务来管理docker container
– Container Service是Container的一个集中管理服务
– 通过Gantt来进行资源调度,挑选docker server来部署container
– 兼容Kubernetes。
Magnum当前状态
• Framework已经成型
– Heat集成进行中
– Docker集成进行中
– Kubenetes集成进行中
– Gantt集成还未开始
• Docker集成目标
–在Magnum添加DockerAgent来和docker daemon交互
• HEAT集成目标
– 通过Magnum创建k8s集群
– K8s可以部署在虚拟机或者物理机上
– K8s集群创建完成后和Magnum集成,提供container服务
• k8s集成目标
– Magnum兼容k8s所有操作
– 现在主要集中在pod和service
Google Kubernetes
• 可以部署在物理机或者虚拟机甚至Docker Container• Google Compute Engine
– 官方推荐– 一键安装
• Vagrant with VirtualBox• Rackspace• OpenStack Heat • Azure• vSphere• Digital Ocean
Google Kubernetes
• 主要概念– Pod:是Kubernetes最基本的部
署调度单元,包含多个container,逻辑上表示某种应用的一个实例。
– Service:是pod的路由代理抽象,用于解决pod的高可用的问题。
– Replication Controller:是pod的复制抽象,用于解决pod的扩容缩容问题。
– Label, 用一组key/val让pod与Service和ReplicationController关联, Label Selector为多个pod提供LB
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提供代理。
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-1Redis-
master
Br:
10.244.1.1
Api server
etcd
Br:
10.244.2.1
10.244.1.310.244.2.2
Redis-
slave-2Redis-
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
Google Kubernetes
• 优点– 当前最好的Docker集群管理工具
– 组件少,容易理解
– 容易安装
• 缺点– 不能管理Docker Image
– Pod没有floating IP
– 不支持Multi-tenant
– 没有网络隔离
– 不能定义Docker Application之间的依赖关系
Google Kubernetes
Docker Platform
• 主要组件
– Machine:创建Docker Host
– Compose:服务编排
– Swarm:资源调度
–没有网络管理的组件
Docker Platform
• Docker Machine– Docker Machine是一个简化
Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
–架构便于第三方集成,可以很方便的开发Machine Driver来和Sotflayer,阿里云等集成。
Docker Platform
• Swarm– Docker Swarm是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务
– Docker Swarm支持用户创建可运行DockerDaemon的主机资源池,然后在资源池中运行Docker容器。
– Docker Swarm可以管理工作负载并维护集群状态。
– 通过Filter和Strategy来调度,类似于Nova scheduler• Filter用来对机器进行过滤
• Strategy来对filter挑选出来的机器进行按照规则排序
Docker Platform
• Docker Compose
– Docker Compose可以让用户在集群中部署分布式应用。
– Docker Compose属于一个“应用
层”的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。
–类似于Heat的template和Kubernetes的manifest
Docker Platform
• Docker Compose一键部署Docker应用
资源调度
• OpenStack,Kubernetes,Swarm
–先过滤(Filter)
–后排序(Weight)
系列二:深度解析Kubernetes
Thank You