Kubernetes的四种用户部署场景,你知吗?

Stella981
• 阅读 885

Kubernetes可以作为容器编排引擎、PaaS或者作为云原生应用的核心基础架构被用户部署到生产环境。这些用例并不是相互排斥的。DevOps可以委托基于Kubernetes的PaaS层完成整个应用生命周期的管理(ALM),也可以独立部署Kubernetes管理CI/CD工具部署的应用。对于新应用程序可以使用Kubernetes管理微服务架构的云原始应用,支持先进的场景,如滚动升级和金丝雀的部署。

这一部分将抓取顶级客户使用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大会上发布。

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这