SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Docker集群管理系列一
工具篇
刘光亚
gyliu513@gmail.com
Sina Weibo: @platformer
单节点Docker管理
Docker集群管理
Docker集群管理
• 需要解决的主要问题
– 资源调度
– 部署运行
– 服务发现
– 扩容缩容
– 网络隔离
Docker集群管理工具
• 当前主要工具
– OpenStack
– Google Kubernetes
– Docker Platform
– Fig
– CoreOS
Nova + Docker
• Nova集成
– 通过Nova compute来实现
– 添加了一个新的nova docker
drvier
– https://github.com/stackforge/no
va-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添加Docker
Agent来和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-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
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支持用户创建可运行Docker
Daemon的主机资源池,然后在资源池中运行
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

Weitere ähnliche Inhalte

Was ist angesagt?

開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018Will Huang
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-dockerBruce Huang
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机EdwardBadBoy
 
Docker workshop
Docker workshopDocker workshop
Docker workshopWei Tung
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6Guangya Liu
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer TalkLarry Cai
 
認識那條鯨魚 Docker 初探
認識那條鯨魚   Docker 初探認識那條鯨魚   Docker 初探
認識那條鯨魚 Docker 初探仲昀 王
 
20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門azole Lai
 
Openstack nova
Openstack novaOpenstack nova
Openstack novaYong Luo
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contributeinwin stack
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetesJiang Shang
 
Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界Xu Wang
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWill Huang
 

Was ist angesagt? (20)

開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Docker應用
Docker應用Docker應用
Docker應用
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
 
Docker Build
Docker BuildDocker Build
Docker Build
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Docker實務
Docker實務Docker實務
Docker實務
 
微服務自己動手做
微服務自己動手做微服務自己動手做
微服務自己動手做
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
認識那條鯨魚 Docker 初探
認識那條鯨魚   Docker 初探認識那條鯨魚   Docker 初探
認識那條鯨魚 Docker 初探
 
20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門
 
Openstack nova
Openstack novaOpenstack nova
Openstack nova
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contribute
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetes
 
Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界Hyper: 让Pod以VM为边界
Hyper: 让Pod以VM为边界
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
 

Andere mochten auch

High Availability with Novell Cluster Services for Novell Open Enterprise Ser...
High Availability with Novell Cluster Services for Novell Open Enterprise Ser...High Availability with Novell Cluster Services for Novell Open Enterprise Ser...
High Availability with Novell Cluster Services for Novell Open Enterprise Ser...Novell
 
high availability case study fusion middleware cluster1
high availability case study fusion middleware cluster1high availability case study fusion middleware cluster1
high availability case study fusion middleware cluster1Soroush Ghorbani
 
VMware HA deep Dive
VMware HA deep DiveVMware HA deep Dive
VMware HA deep DiveEric Sloof
 
Building High Availability Clusters with SUSE Linux Enterprise High Availabil...
Building High Availability Clusters with SUSE Linux Enterprise High Availabil...Building High Availability Clusters with SUSE Linux Enterprise High Availabil...
Building High Availability Clusters with SUSE Linux Enterprise High Availabil...Novell
 
Pacemaker+DRBD
Pacemaker+DRBDPacemaker+DRBD
Pacemaker+DRBDDan Frincu
 
SLE12 SP2 : High Availability et Geo Cluster
SLE12 SP2 : High Availability et Geo ClusterSLE12 SP2 : High Availability et Geo Cluster
SLE12 SP2 : High Availability et Geo ClusterSUSE
 
Maria DB Galera Cluster for High Availability
Maria DB Galera Cluster for High AvailabilityMaria DB Galera Cluster for High Availability
Maria DB Galera Cluster for High AvailabilityOSSCube
 
Metro Cluster High Availability or SRM Disaster Recovery?
Metro Cluster High Availability or SRM Disaster Recovery?Metro Cluster High Availability or SRM Disaster Recovery?
Metro Cluster High Availability or SRM Disaster Recovery?David Pasek
 
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeAcademy
 
Why SaltStack ?
Why SaltStack ?Why SaltStack ?
Why SaltStack ?SUSE
 
SUSE OpenStack Cloud 7
SUSE OpenStack Cloud 7SUSE OpenStack Cloud 7
SUSE OpenStack Cloud 7SUSE
 
Introduction - vSphere 5 High Availability (HA)
Introduction - vSphere 5 High Availability (HA)Introduction - vSphere 5 High Availability (HA)
Introduction - vSphere 5 High Availability (HA)Eric Sloof
 
Cluster Computers
Cluster ComputersCluster Computers
Cluster Computersshopnil786
 
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...Ontico
 
Cluster computing pptl (2)
Cluster computing pptl (2)Cluster computing pptl (2)
Cluster computing pptl (2)Rohit Jain
 

Andere mochten auch (20)

High Availability with Novell Cluster Services for Novell Open Enterprise Ser...
High Availability with Novell Cluster Services for Novell Open Enterprise Ser...High Availability with Novell Cluster Services for Novell Open Enterprise Ser...
High Availability with Novell Cluster Services for Novell Open Enterprise Ser...
 
high availability case study fusion middleware cluster1
high availability case study fusion middleware cluster1high availability case study fusion middleware cluster1
high availability case study fusion middleware cluster1
 
OAuth2介紹
OAuth2介紹OAuth2介紹
OAuth2介紹
 
Cluster in linux
Cluster in linuxCluster in linux
Cluster in linux
 
VMware HA deep Dive
VMware HA deep DiveVMware HA deep Dive
VMware HA deep Dive
 
Building High Availability Clusters with SUSE Linux Enterprise High Availabil...
Building High Availability Clusters with SUSE Linux Enterprise High Availabil...Building High Availability Clusters with SUSE Linux Enterprise High Availabil...
Building High Availability Clusters with SUSE Linux Enterprise High Availabil...
 
Pacemaker+DRBD
Pacemaker+DRBDPacemaker+DRBD
Pacemaker+DRBD
 
linux-enterprise-cluster
linux-enterprise-clusterlinux-enterprise-cluster
linux-enterprise-cluster
 
SLE12 SP2 : High Availability et Geo Cluster
SLE12 SP2 : High Availability et Geo ClusterSLE12 SP2 : High Availability et Geo Cluster
SLE12 SP2 : High Availability et Geo Cluster
 
Maria DB Galera Cluster for High Availability
Maria DB Galera Cluster for High AvailabilityMaria DB Galera Cluster for High Availability
Maria DB Galera Cluster for High Availability
 
Metro Cluster High Availability or SRM Disaster Recovery?
Metro Cluster High Availability or SRM Disaster Recovery?Metro Cluster High Availability or SRM Disaster Recovery?
Metro Cluster High Availability or SRM Disaster Recovery?
 
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
 
Why SaltStack ?
Why SaltStack ?Why SaltStack ?
Why SaltStack ?
 
SUSE OpenStack Cloud 7
SUSE OpenStack Cloud 7SUSE OpenStack Cloud 7
SUSE OpenStack Cloud 7
 
Introduction - vSphere 5 High Availability (HA)
Introduction - vSphere 5 High Availability (HA)Introduction - vSphere 5 High Availability (HA)
Introduction - vSphere 5 High Availability (HA)
 
Cluster Computers
Cluster ComputersCluster Computers
Cluster Computers
 
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
 
Cluster computing pptl (2)
Cluster computing pptl (2)Cluster computing pptl (2)
Cluster computing pptl (2)
 
Cluster Computing
Cluster ComputingCluster Computing
Cluster Computing
 
Cluster computing
Cluster computingCluster computing
Cluster computing
 

Ähnlich wie Docker集群管理 工具篇

Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Ch Rick
 
docker intro
docker introdocker intro
docker introkoji lin
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术团队
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作Philip Zheng
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍Tianwei Liu
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训青帅 常
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShopPhilip Zheng
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討國昭 張
 
Cloudstack dev/user sharing
Cloudstack dev/user sharingCloudstack dev/user sharing
Cloudstack dev/user sharinggavin_lee
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲ChinaNetCloud
 
kubernetes入门培训
kubernetes入门培训kubernetes入门培训
kubernetes入门培训bobo45284
 
Docker
DockerDocker
DockerNCUDSC
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)Will Huang
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出Miles Chou
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用謝 宗穎
 
架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境Phate334
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8schabateryuhlin
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛Edward Kuo
 

Ähnlich wie Docker集群管理 工具篇 (20)

Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器
 
docker intro
docker introdocker intro
docker intro
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討
 
Cloudstack dev/user sharing
Cloudstack dev/user sharingCloudstack dev/user sharing
Cloudstack dev/user sharing
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
kubernetes入门培训
kubernetes入门培训kubernetes入门培训
kubernetes入门培训
 
Docker
DockerDocker
Docker
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
Kubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCUKubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCU
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境架設Hadoop叢集以及mapreduce開發環境
架設Hadoop叢集以及mapreduce開發環境
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8s
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 

Mehr von Guangya Liu

IBM Cloud Private Introduction
IBM Cloud Private IntroductionIBM Cloud Private Introduction
IBM Cloud Private IntroductionGuangya Liu
 
Docker volume-isolator-in-mesos
Docker volume-isolator-in-mesosDocker volume-isolator-in-mesos
Docker volume-isolator-in-mesosGuangya Liu
 
Open source-summit-k8 s-mesos-v7
Open source-summit-k8 s-mesos-v7Open source-summit-k8 s-mesos-v7
Open source-summit-k8 s-mesos-v7Guangya Liu
 
Mesos vs Kubernetes: What We Learned Working With Both For Chinese Customers
Mesos vs Kubernetes: What We Learned Working With Both For Chinese CustomersMesos vs Kubernetes: What We Learned Working With Both For Chinese Customers
Mesos vs Kubernetes: What We Learned Working With Both For Chinese CustomersGuangya Liu
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Guangya Liu
 
Mesos con 2015 recap meetup-v2
Mesos con 2015 recap meetup-v2Mesos con 2015 recap meetup-v2
Mesos con 2015 recap meetup-v2Guangya Liu
 
Pairs OpenStack Summit Summary
Pairs OpenStack Summit SummaryPairs OpenStack Summit Summary
Pairs OpenStack Summit SummaryGuangya Liu
 
OpenStack Resource Scheduling
OpenStack Resource SchedulingOpenStack Resource Scheduling
OpenStack Resource SchedulingGuangya Liu
 
Organizing open stack-meetup-in-china
Organizing open stack-meetup-in-chinaOrganizing open stack-meetup-in-china
Organizing open stack-meetup-in-chinaGuangya Liu
 

Mehr von Guangya Liu (10)

Istio简介
Istio简介Istio简介
Istio简介
 
IBM Cloud Private Introduction
IBM Cloud Private IntroductionIBM Cloud Private Introduction
IBM Cloud Private Introduction
 
Docker volume-isolator-in-mesos
Docker volume-isolator-in-mesosDocker volume-isolator-in-mesos
Docker volume-isolator-in-mesos
 
Open source-summit-k8 s-mesos-v7
Open source-summit-k8 s-mesos-v7Open source-summit-k8 s-mesos-v7
Open source-summit-k8 s-mesos-v7
 
Mesos vs Kubernetes: What We Learned Working With Both For Chinese Customers
Mesos vs Kubernetes: What We Learned Working With Both For Chinese CustomersMesos vs Kubernetes: What We Learned Working With Both For Chinese Customers
Mesos vs Kubernetes: What We Learned Working With Both For Chinese Customers
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3
 
Mesos con 2015 recap meetup-v2
Mesos con 2015 recap meetup-v2Mesos con 2015 recap meetup-v2
Mesos con 2015 recap meetup-v2
 
Pairs OpenStack Summit Summary
Pairs OpenStack Summit SummaryPairs OpenStack Summit Summary
Pairs OpenStack Summit Summary
 
OpenStack Resource Scheduling
OpenStack Resource SchedulingOpenStack Resource Scheduling
OpenStack Resource Scheduling
 
Organizing open stack-meetup-in-china
Organizing open stack-meetup-in-chinaOrganizing open stack-meetup-in-china
Organizing open stack-meetup-in-china
 

Docker集群管理 工具篇

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

Hinweis der Redaktion

  1. Pod比如一个web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三个container的pod。 Service因为pod的运行状态可动态变化(比如切换机器了、缩容过程中被终止了等),所以访问端不能以写死IP的方式去访问该pod提供的服务。service的引入旨在保证pod的动态变化对访问端透明,访问端只需要知道service的地址,由service来提供代理。 RC:通常,分布式应用为了性能或高可用性的考虑,需要复制多份资源,并且根据负载情况动态伸缩。通过replicationController,我们可以指定一个应用需要几份复制,Kubernetes将为每份复制创建一个pod,并且保证实际运行pod数量总是与该复制数量相等(例如,当前某个pod宕机时,自动创建新的pod来替换)。 可以看到,service和replicationController只是建立在pod之上的抽象,最终是要作用于pod的,那么它们如何跟pod联系起来呢?这就要引入label的概念:label其实很好理解,就是为pod加上可用于搜索或关联的一组key/value标签,而service和replicationController正是通过label来与pod关联的。如下图所示,有三个pod都有label为"app=backend",创建service和replicationController时可以指定同样的label:"app=backend",再通过label selector机制,就将它们与这三个pod关联起来了。例如,当有其他frontend pod访问该service时,自动会转发到其中的一个backend pod。
  2. 调度:这部分工作分出来变成一个组件,可以很方便地替换成其他的调度器。现在已经有了Mesos的插件来帮助Kubernetes来做资源调度了 Kubelet:它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器。同时,它也会接收apiserver的HTTP请求,汇报pod的运行状态。 Proxy:它会定期从etcd获取所有的service,并根据service信息创建代理,对用户请求进行转发
  3. cAdvisor 是谷歌公司用来分析运行中的 Docker 容器的资源占用以及性能特性的工具,主要为资源调度提供一些参数 cAdvisor 主要用来收集、聚合、处理和导出运行容器相关的信息,每个容器保持独立的参数、历史资源使用情况和完整的资源使用数据。
  4. Docker的安装流程非常复杂,用户需要登录到相应的主机上,根据官方的安装和配置指南来安装Docker,并且不同的操作系统的安装步骤也是不一样的。而有了Machine后,不管是在笔记本、虚拟机还是公有云实例上,用户仅仅需要一个命令....当然那你需要先安装Machine。