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最常见的用法是管理生产级容器。客户可以选择部署开源版本的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。
Kubernetes作为一个私有PaaS平台
客户部署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配有内置策略管理工具,着眼于用户认证和管理内置的镜像仓库。
Kubernetes作为云原始基础架构
业内人士对云原生应用的定义虽然没有确切的共识,但大多数人同意,云原始应用可以被定义为新的应用程序,打包成容器、微服务架构、运行在弹性基础架构、并通过敏捷DevOps流程管理。云原生应用与十二因子应用的原则是紧密一致的。
不是每个容器应用都是一个云原生应用。Kubernetes用来部署和管理容器应用程序。同时,Kubernetes可以管理云原生应用程序的生命周期。客户可以选择Kubernetes作为部署平台的首选,设计、开发、测试、部署和管理云原生应用程序。
云原生应用被部署在现有的基础设施或PaaS的Kubernetes集群上。尽管与上面定义的场景重叠,这种情况适用于组织构建应用,他们不需要与现有的遗留应用程序交互。
云原生应用程序可以利用Kubernetes先进的功能,如滚动更新、金丝雀部署、水平pod和集群伸缩。Kubernetes作为云原生应用的基础架构,仍是在不断发展,值得指出的是,这对许多用户和组织具有战略价值。
Kubernetes作为云原生应用的基础架构包括如下项目:Intel和CoreOS的Stackanetes项目。Stackanetes是基于kurbernetes的OpenStack。它提供了高可用性、自愈、OpenStack IaaS的全部特征,并且提供Kubernetes自动化部署和管理。该项目的技术预览将在巴塞罗那OpenStack大会上发布。
本文地址:https://www.linuxprobe.com/kubernetes-deployment-scenarios.html
共同学习,写下你的评论
评论加载中...
作者其他优质文章