《Kubernetes的四种用户部署场景》要点:
本文介绍了Kubernetes的四种用户部署场景,希望对您有用。如果有疑问,可以联系我们。
Kubernetes可以作为容器编排引擎、PaaS或者作为云原生应用的核心基础架构被用户部署到生产环境.这些用例并不是相互排斥的.DevOps可以委托基于Kubernetes的PaaS层完成整个应用生命周期的管理(ALM),也可以独立部署Kubernetes管理CI/CD工具部署的应用.对于新应用程序可以使用Kubernetes管理微服务架构的云原始应用,支持先进的场景,如滚动升级和金丝雀的部署.
这一部分将抓取顶级客户使用Kubernetes的案例 .在此之前,让我们仔细看一个企业的容器管理平台的重要组件.
客户需要安装一套工具来有效地管理容器化应用程序的生命周期.它们构成容器管理平台核心组成部分.这种模式的平台变得越来越普遍,对于部署和管理生产级容器,至关重要.
操作系统
容器减少应用程序对底层操作系统的依赖性.运行容器的工作负载喜欢选择轻量级的操作系统,像CoreOS和RedHat Atomic Host,降低基础设施的管理成本.
容器引擎
容器引擎管理特定主机或节点上运行的容器的生命周期,编排工具和容器引擎共同调度管理集群节点的容器.Docker和rkt是两种容器引擎.
镜像仓库
镜像仓库是容器镜像的存储库.运行时编排引擎可以通过镜像仓库安全访问镜像.Docker的Trusted Registry,CoreOS的Quay Enterprise和JFrog的Artifactory都是可选择的镜像仓库.
镜像安全
镜像是容器平台非常重要的基础,需要扫描镜像的脆弱性和潜在威胁.CoreOS的Clair、Twistlock和OpenSCAP可以用于镜像扫描.
容器编排
这是管理容器工作负载的最重要部分.它提供分布式容器管理和容器调度服务.Kubernetes,Docker原生编排Swarm及Mesosphere DC/OS提供容器编排和容器管理.
分布式存储
容器需要一种新的分布式存储来管理有状态的工作负载.产品如ClusterHQ、Portworx、Joyent Manta和Diamanti提供容器存储.
监测
生产级工作负载需要不断的查看应用的状态和健康.容器监测解决方案包括基础设施监控和运行容器的监控.Datadog、Sysdig、Prometheus提供容器监控服务.
日志
通过日志分析,可以了解容器及其主机的性能、稳定性和可靠性.同任何生产的工作负载一样,日志是非常重要的.Splunk、Loggly、Logentries提供容器日志服务.
代码管理
代码管理(SCM)通常用于维护代码版本,同时,对容器化工作负载(如:镜像和Kubernetes对象)的版本也起着重要的作用.现有的SCM解决方案,如GitHub,Bitbucket和Gitlab,可以用于管理代码和容器化工作负载.
构建自动化
容器镜像作为构建CI/CD管道的一部分.通过利用现有的工作流和创建自动化管道,客户可以实现容器化应用的自动部署.专业CI/CD的工具,如Shippable,或现有的工具,像Jenkins,都可以用来扩展,作为容器化应用的自动化部署工具.
配置管理
传统的配置管理工具已经扩展支持容器.客户能混合和匹配容器化和虚拟化技术,使用统一的工具提供创建、配置、部署和管理应用程序.Chef、Puppet、Ansible和SaltStack已经增加了容器的支持,可以利用现有的playbooks和recipes管理容器化应用.
Kubernetes最常见的用法是管理生产级容器.客户可以选择部署开源版本的Kubernetes或使用商业版.部署目标可能是私有部署、公共云或混合云.
在这种情况下,客户可以使用混合DevOps工具管理现有的应用和新的应用程序,并且,可以使用一组异构工具,如:管理镜像仓库、安全扫描、存储、网络和自动化构建.Kubernetes整合现有的工具构造容器编排和容器管理工具.客户可以使用商业版Kubernetes,如Tectonic,或企业分发版Canonical.
CoreOS Tectonic
CoreOS诞生于容器的时代.Tectonic是首个基于Kubernetes、端到端的企业容器编排引擎.CoreOS技术栈结合了Kubernetes,并做了安全增强.客户获得最新的更新以保持他们的基础架构是最新的.
对比Kubernetes,Tectonic主要做了安全增强.分布式可信计算(DTC)通过密码验证客户整个环境(从硬件到分布式集群)的完整性.当企业运行Kubernetes在一个偏远的、合作的基础设施上. 添加集群节点,验证此节点为受信节点是很重要的.即使潜在的缺乏抵抗力的数据中心,DTC同样能保证集群的完整性.
同时,Tectonic在构建、存储、部署容器过程中,集成了CoreOS私有镜像仓库Quay企业版.
Canonical
Canonical提供Ubuntu分发版,并通过提供商业版Kubernetes挤入容器编排市场.Canonical为客户提供稳定的上游的Kubernetes发布,以及获得上游的Kubernetes分支的早期版本.主节点可以扩展独立的工作节点.工作节点可以自动轻易的移值,从公有云、私有云和裸机到Google Container Engine.Canonical除了管理容器生命周期的功能外,还包括创建删除用户访问、提供维护模式、 支持最新版本的升级.
Canonical包括如下组件:Kubernetes控制台、基于Prometheus的监控系统(收集和处理系统量度)、基于ELK的日志监控、Flannel容器网络、集成Ceph分布式存储.
Canonical使用现有的基础设施和DevOps工具,规范优化了Kubernetes运行.运行Canonical的OpenStack客户、裸机框架的(MAAS)服务、DevOps工具Juju,都可以轻易集成Kubernetes.
客户部署PaaS主要规范了部署和部署环境.通过使用基于Kubernetes的PaaS,他们将在同一个平台上管理传统业务应用软件和新的容器化应用.Kubernetes已被传统的PaaS供应商采用,给企业客户提供端到端的平台.基于核心容器能力,这些PaaS产品提供完整的生命周期管理容器应用.
PaaS供应商添加了额外的功能,如应用分发、消息路由、服务代理、容量规划、集成日志.PaaS没有暴露底层基础设施,是面向开发者提供通用平台.PaaS层试图抽象Kubernetes的复杂性、简化工作流.
在基于Kubernetes的PaaS平台中,Apprenda和红帽OpenShift是领先的.他们提供商业支持Kubernetes.其他Kubernetes的PaaS平台,包括AppsCode和Eldarion Cloud,他们发布做为公共云服务.
Apprenda
Apprenda是一个企业PaaS平台,针对微软.NET客户和java应用程序,提供一个有效的应用部署架构.该平台设计目标是面向开发和运维团队,为现有的私有部署的企业应用提供PaaS功能.
近日,Apprenda拥抱Docker和Kubernetes,解决传统与新应用软件的差距.客户将能够混合和匹配DevOps过程,对于.net应用、还是java应用程序、或容器应用,提供通用的DevOps过程.
开发者和运维团队可以使用现有的CI/CD工具维持旧的应用程序以及Kubernetes应用.虽然Apprenda PaaS不是开源软件,但通过hooks和REST API,它能够集成到其他平台.部署在Kubernetes应用程序,为传统的.NET或java应用程序提供标准协议.
Apprenda是一个策略驱动的PaaS平台,运维团队通过定义粒度策略,管理应用发布、监控、合规性和安全性.这种方法满足企业客户的目标,作为现有的应用程序门户,并考虑包括容器应用.它允许部署、安全和合规策略集中定义和管理.同时在可扩展的平台上,让开发团队专注于应用程序开发.
Red hat OpenShift
红帽的OpenShift是基于Kubernetes开源企业级PaaS平台的领先者.Google之后,红帽的OpenShift工程师是对Kubernetes项目最活跃的贡献者.
同其他竞争者一样,红帽早期OpenShift平台是一个定制化的平台实现,后来,采用了开发者工具Docker和Kubernetes,OpenShift转移到基于Kubernetes引擎的PaaS平台.
OpenShift提炼Kubernetes基础结构,它是面向开发者经验的平台,它提供了一套用户接口连接Git,及专有的红帽企业Linux(RHEL)工具,Docker和Kubernetes.开发者通过已有的Git工具或者集成的镜像仓库与平台交互.该平台包括一个Source-to-Image (S2I)工具,能转变开发代码变成运行的Docker容器,并保留Docker镜像分层结构.红帽基于 Kubernetes添加企业级特性,如项目、用户和组、多租户功能.在同一集群中,多部门或业务单元能部署不同的应用,并达到资源隔离.OpenShift还提供了应用程序日志的全面视图,包括实时日志、构建日志和部署日志.
DevOps团队可以使用熟悉的Docker和Kubernetes工具管理平台.OpenShift配有内置策略管理工具,着眼于用户认证和管理内置的镜像仓库.
业内人士对云原生应用的定义虽然没有确切的共识,但大多数人同意,云原始应用可以被定义为新的应用程序,打包成容器、微服务架构、运行在弹性基础架构、并通过敏捷DevOps流程管理.云原生应用与十二因子应用的原则是紧密一致的.
不是每个容器应用都是一个云原生应用.Kubernetes用来部署和管理容器应用程序.同时,Kubernetes可以管理云原生应用程序的生命周期.客户可以选择Kubernetes作为部署平台的首选,设计、开发、测试、部署和管理云原生应用程序.
云原生应用被部署在现有的基础设施或PaaS的Kubernetes集群上.尽管与上面定义的场景重叠,这种情况适用于组织构建应用,他们不需要与现有的遗留应用程序交互.
云原生应用程序可以利用Kubernetes先进的功能,如滚动更新、金丝雀部署、水平pod和集群伸缩.Kubernetes作为云原生应用的基础架构,仍是在不断发展,值得指出的是,这对许多用户和组织具有战略价值.
Kubernetes作为云原生应用的基础架构包括如下项目:Intel和CoreOS的Stackanetes项目.Stackanetes是基于kurbernetes的OpenStack.它提供了高可用性、自愈、OpenStack IaaS的全部特征,并且提供Kubernetes自动化部署和管理.该项目的技术预览将在巴塞罗那OpenStack大会上发布.
深入浅出学习etcd
etcd为分布式系统提供可靠、高效的配置管理服务,在Docker、Kubernetes、Mesos等平台中扮演了越来越重要的角色.作为2013年开始的项目,它还很年轻,官方文档中缺乏实现上全面、系统的介绍,本课程深入浅出地介绍了etcd的实现,并为运维和二次开发提供了系统的指导和建议.
系列文章:
文章来自微信公众号:Docker
转载请注明本页网址:
http://www.vephp.com/jiaocheng/4082.html