这篇文章主要介绍企业部署Kubernetes的部署模型,包括托管Kubernetes和容器服务、公共云和基础设施服务、私有部署和数据中心及混合部署。
我们可以在各种不同环境使用不同的模式部署Kubernetes。随着更多的团队和组织正在使用Kubernetes,确定他们最有可能采取的模式是重要的。本节重点是部署模型,运行供应商产品和服务的生产负载的部署模型包括如下:
托管Kubernetes和容器服务
公共云和基础设施服务
私有部署和数据中心
混合部署
Kubernetes集群由商业供应商托管、维护和管理的交付模式在PaaS概念中被称为容器服务。
CaaS提供服务质量级别协议(SLA),同时驱动基础设施的高可用性和可扩展性。CaaS超越基本集群的功能 。Google Container Engine (GKE),Amazon EC2 Container Service,Azure Container Service和Rackspace Carina 是公共云中CaaS的例子。通常,它包括其他必要的服务,如:镜像仓库、L4和L7负载平衡器、持久化块存储、健康监控、托管数据库、聚集日志和监控、自动pods扩展和节点、并支持端到端的应用生命周期管理。
除了CaaS功能外,Kubernetes作为一个公共云服务。许多客户开始使用Google Container Engine提供的Kubernetes服务,这是公有云上提供商业托管Kubernetes的首例。 托管和维护服务由Google提供,Google Container Engine(GKE)提供自动化的容器管理,并与其他Google云服务整合,如:日志,监控,容器仓库,持久化磁盘,负责均衡和虚拟私有网络(VPN)。
GKE管理主节点和etcd数据库,只向客户暴露Kubernetes集群节点 。这使得用户可以专注于应用程序,避免了基础设施维护的负担。GKE可以在几分钟内迅速完成添加新的节点,实现集群扩展。GKE也可以升级到最新版本的Kubernetes集群,确保基础设施是最新的。客户可以在现有的 GKE集群上使用工具如kubectl 管理应用程序的部署。
其他托管Kubernetes产品包括AppsCode、KCluster和StackPointCloud。AppsCode提供对Kubernetes应用完整的应用生命周期管理,同时可以选择在AWS和谷歌的云上运行集群 。KCluster是在托管Kubernetes方面的新星,它运行在AWS上,并计划在未来支持其他云平台。StackPointCloud着重在AWS、Packet、DigitalOcean、Azure和Google云平台上快速部署集群,并使用了开源工具Tectonic、Prometheus、Deis、fabric8和Sysdig。
除了使用公有云上托管Kubernetes的CAAS服务,客户可以部署自己的集群。他们能选择特定版本的Kubernetes,并与IaaS服务整合。
在公有云上,CoreOS是运行Kubernetes的首选操作系统。公司提供部署Kubernetes的详尽的文档和安装步骤指南,可以部署Kubernetes在各种环境上。
Kubernetes变得更容易安装。在1.4版本中,新的工具kubeadm,简化了在CentOS和Ubuntu机器上安装Kubernetes。客户可以运行一个功能齐全的集群只需四个步骤。
私有部署和数据中心
企业客户通常喜欢在数据中心内运行Kubernetes集群。他们用虚拟化基础设施或裸机服务器可以获得更好的性能。Kubernetes部署在防火墙后面,同时需要部署镜像仓库、镜像扫描、监视和日志组件。
有些商业企业提供这样必要的产品组件,他们分两种形式:商业版和基于Kubernetes的企业PaaS平台。商业版有CoreOS的Tectonic和Kubernetes CD,提供定制化的企业部署Kubernetes。红帽的OpenShift和Apprenda是Kubernetes应用平台,他们为云原生应用提供端到端的应用程序生命周期管理功能。
混合部署是客户跨本地数据中心和公共云部署Kubernetes。它利用云供应商和Kubernetes联合集群提供的虚拟网络层。
Kubernetes集群federation可以跨区跨域、甚至在不同的云平台上运行集群。Federation提供多集群地理复制机制,保持最关键服务运行,即使面对区域连接或数据中心故障。
混合架构是基于联合集群,企业可以在数据中心运行敏感的工作负载,同时在公有云运行面向互联网、弹性的工作负载。客户可以跨多个部署目标有效地管理他们的部署,并且,可以跨多区和跨多供应商动态优化部署,节省运维成本。