在当今云计算领域,“容器技术”已经从三四年前的炒作期正式进入了产业落地期,而Kubernetes作为容器平台的标准已经得到了广泛应用。

Kubernetes从2014年6月由Google宣布开源,到2015年7月发布第一个正式版本1.0并进入CNCF基金会,再到2018年3月从CNCF基金会正式毕业,版本更替到1.10。短短三年间,Kubernetes含着Google的金钥匙,顶着Borg的光环迅速成为容器编排领域的标准,是开源历史上发展最快的项目之一。

截止3月份,Kubernetes项目在总体贡献方面位于GitHub第9位,作者/问题排在第2位,仅次于Linux项目。从CNCF基金会今年3月份发布的报告,71%的财富100强企业使用容器,超过50%的财富100强企业使用Kubernetes作为容器业务流程平台。

企业在思考并实践落地Kubernetes的过程中,通常需要面对多个问题,比如:

● Kubernetes对我们有什么好处?能够解决当前的什么问题?

● 优先在哪些业务场景、流程环节使用Kubernetes?

● 现有基础设施能否平滑切换到Kubernetes?

● 现有基础设施上托管的业务能否平滑切换到Kubernetes?

● 企业人员(开发、测试、运维、设计等)能否快速适应Kubernetes?是否会带来较大的转型挑战?

…………

如果我们对这些疑问进行归类,可以聚焦到以下三个基础问题上来。

需不需要Kubernetes?

01
Kubernetes是一个“容器编排平台”,即:容器化业务的管理平台。因此,需不需要Kubernetes通常与业务需不需要做容器化改造在一起考虑。与基于“服务器+Linux+软件包”的传统非容器化业务相比,核心差异点主要有两处:

● 业务交付件是容器化交付件;

● 业务运行时环境是容器化运行时;

而需不需要Kubernetes完全取决于这两点是否能够带来收益。下表简单描述了一些关键收益,以及同时引入的问题。

Kubernetes是一个“容器编排平台”,即:容器化业务的管理平台。因此,需不需要Kubernetes通常与业务需不需要做容器化改造在一起考虑。与基于“服务器+Linux+软件包”的传统非容器化业务相比,核心差异点主要有两处:

● 业务交付件是容器化交付件;

● 业务运行时环境是容器化运行时;

而需不需要Kubernetes完全取决于这两点是否能够带来收益。下表简单描述了一些关键收益,以及同时引入的问题。

收益

问题

容器化交付件

● 环境一致性保障

● 交付简单

● 交付件对传输与储存有更高要求

● 引入新的镜像构建过程

容器化运行时
● 更细粒度资源切分

● 进程级资源SLA保障

● 秒级启动与扩容

● 业务密度高,运维难度增加

● 网络、存储的处理复杂度提升

从企业的角度来看,容器化改造对于关键的业务交付效率、基础设施资源利用率普遍会带来很好的收益,尤其是对交付效率和资源成本更为关注的轻资产型业务,这也是为何容器技术得到广泛关注与应用的主要原因。而相对而言容器化改造所带来的问题则可以通过引入一些工具与服务进行解决,比如自动化镜像构建工具、具有高速传输与高容量存储能力的镜像仓库、容器化环境与业务的监控运维工具、高性能与配置自动化的容器网络与存储管理服务等。

如何切换到Kubernetes?

02

一旦确定要使用Kubernetes,那对于企业业务而言,就需要考虑业务研发流程、基础设施资源如何切换到Kubernetes。这里,通常可以分为三个场景考虑:

● 业务交付流程如何切换到Kubernetes

● 业务运维流程如何切换到Kubernetes

● 业务运行负载如何迁移到Kubernetes

下表描述了典型的处理方式:

典型处理方式

交付流程切换

① 搭建容器镜像仓库,用于保存容器化交付件

②容器化改造,软件包改造成Docker Image

③编写新的容器化版本发布包,包括运行在K8S上所需的描述文件

④改造开发、测试、生产环境,改为容器化基础设施(K8S集群)

⑤修改CI/CD系统,对接到容器化测试、生产环境

⑥(可选)修改现有交付流程管理工具或平台,适应新的容器化交付流程

运维流程切换

① 部署用于收集容器化基础设施(K8S集群)的监控、日志、告警等信息的运维系统,并对接到运维中心

②部署用于收集容器化业务的监控、日志、告警等信息的运维系统,并对接到运维中心

运行负载迁移

①准备新的容器化基础设施(K8S集群)

②部署新的容器化版本,业务逻辑测试通过

③准备灰度发布环境,通过A/B testing或蓝绿等发布方式完成新旧版本运行时负载迁移

④非容器化的旧版本下线,完成迁移

在上述过程中可以看到,在企业落地Kubernetes过程中,除了Kubernetes平台本身的搭建,围绕着Kubernetes生态的一些工具与服务也非常重要,包括面向容器化业务的CI/CD工具链、容器化环境与业务的监控运维、应用发布与交付工具等。在不具备相关容器化平台完整能力的情况下,落地Kubernetes并不能够达成提升业务交付效率的目的。

如何适应Kubernetes?

03

完成面向容器的交付、运维与迁移流程改造只是做好了实践Kubernetes的基础条件准备工作,对企业而言最重要的还是业务如何在新的平台之上运转的更高效、更可靠、更安全。“容器”相比于传统基础设施而言,更适合作为当前企业的新一代应用设施的原因主要包括三点:

● “容器”将应用与基础设施紧密的联系在了一起,改变了传统的应用与设施管理相分离的思维与运作模式,而这一点恰恰与DevOps理念是完美契合的。

● “容器”带来了更高的弹性,表现在更精细的资源分配与调度、更快速的弹性扩缩容,以及对底层资源更高的抽象,更适合以“弹性”为核心理念的云计算。

● “容器”是应用微服务理念的最佳实践。微服务化架构更多是从应用开发角度来思考,而容器更偏向于应用发布与运维,这两者的结合真正能打通应用交付全流程。

上述三点在Kubernetes均得到完整的体现。Kubernetes通过CNI、CSI、Device Plugin等插件与网络、存储、GPU等基础设施资源整合在一起,通过上层统一的调度系统完成面向应用的实时、弹性资源分配,并且通过Autoscaler能够完成基于策略的自动扩缩容;而Service、Workload、ConfigMap等对象以及DNS、Ingress/Service controller等系统级组件原生支持了服务发现、配置、路由、负载均衡等微服务模型及框架能力,并且通过Kubernetes生态中的Istio项目能够提供更为完整的ServiceMesh微服务治理能力。

因此,企业业务如何适应Kubernetes的过程,也同时是如何落地DevOps、微服务、弹性基础设施理念的过程。这里面,不仅仅包含如何做业务的改造来适应容器化运行环境与容器化交付流程,更多的应该是思考如何更好地基于Kubernetes的各种最佳实践来优化业务本身,设计更适合的业务架构,优化业务交付流程中各个环节,做到更好的Cloud-Native与Kubernetes-Native。

华为云帮助企业落地Kubernetes

04

作为Kubernetes 最早的采用者之一,华为自2013年起在内部多个产品落地Kubernetes,在这个过程中,围绕着本文上述的三个基本性问题,以及规模化生产环境落地场景,华为发现并解决了一些功能缺失、系统级高可用、可扩展性挑战等问题,并积极回馈给了Kubernetes社区。基于这些场景的落地经验,以及广泛的社区核心特性贡献,华为也顺利成为Kubernetes社区技术监管委员会成员,以及CNCF基金会TOC成员。

一方面基于内部实践的思考,另一方面基于外部各类客户场景的落地经验总结,华为云围绕着上述三个基础问题,面向企业用户提供了全栈Kubernetes服务,以期能够帮助企业快速落地Kubernetes,助力企业Cloud-Native战略实施。

华为云提供的Kubernetes全栈服务主要包括:

容器化基础设施

华为云提供了通过CNCF官方认证的两种Kubernetes服务供用户选择,包括云容器引擎(CCE)与云容器实例(CCI)。CCE是用户专属Kubernetes服务,用户可以控制整个Kubernetes集群,同时管理基础设施资源与运行在Kubernetes上的容器化业务;而CCI是Serverless Kubernetes服务,用户只需要管理运行在Kubernetes上的容器化业务,无需感知Kubernetes集群,而交由华为云自动管理,进一步降低Kubernetes落地门槛。

容器化交付流程

华为云容器镜像服务(SWR)提供了高性能、高容量、高安全的企业级私有镜像仓库,并提供了镜像构建与发布流水线ContainerOps支持业务自动化交付,同时,ContainerOps能够支持企业现有工具的接入,最大程度减小对现有企业交付流程的冲击,辅助企业业务平滑迁移。

华为云应用编排服务(AOS)提供了自动化云设施管理工具,企业可以通过预置的模板自动化完成容器化的开发、测试、生产环境准备,以及日常配置与变更工作,将企业从繁杂的基础设施管理工作中解放出来,聚焦到业务本身。对于业务较复杂的场景,AOS还能够将Kubernetes上运行的各种工作负载、各类资源对象进行整合管理,并提供完善的版本与生命周期管理机制,便于企业以更完整的业务为对象进行日常管理。

容器化运维流程

华为云提供了应用运维管理(AOM)与应用性能管理(APM)服务辅助容器化业务运维,包括丰富的各类运维工具,除了基础的监控、日志与告警,进一步面向故障定位与分析场景提供了应用全局性能拓扑展示与调用链跟踪等高级特性,使得运维人员能够及时了解应用健康状态并进行相关处理。

容器化架构转型

华为云云容器引擎(CCE)与微服务引擎(CSE)提供了Kubernetes生态的Istio以及Apache ServiceComb两种微服务框架供企业实施微服务架构转型。对于Java企业级应用,CSE基于ServiceComb提供了具备升降级、容错、熔断等完整服务治理能力的微服务框架,并兼容Spring Cloud、Dubbo等开源接口,具备更高的服务吞吐性能;而CCE也原生集成了Istio项目,并提供高性能ServiceMesh数据面,面向非侵入式场景提供Kubernetes-Native的微服务治理能力。

随着Kubernetes的全面成熟与大规模应用,如何落地Kubernetes是企业实施云战略需要考虑的迫切问题。

落地Kubernetes除了对Kubernetes平台自身的熟悉与掌握之外,如何对现有业务及基础设施进行容器化改造、如何应对Kubernetes对业务现有交付与运维流程的冲击、如何深入思考容器与Kubernetes给企业所带来的转型化思考都是需要一并考虑的问题。

引入围绕着Kubernetes的各类工具化服务能够让企业快速获取业界最佳实践,平滑迁移现有软硬件资产,减小对现有业务交付与运维流程的冲击,使得企业平稳落地Kubernetes并合理优化现有业务,最终达成提升业务交付效率、简化基础设施管理的目的。

企业落地Kubernetes的问题与对策的更多相关文章

  1. “DNAT+云链接+CDN”加速方案,助力出海企业落地生长

    摘要:“DNAT+云链接+CDN”加速方案,真正释放技术红利,真诚助力企业出海. 随着国内互联网行业的人口红利逐渐消失,本土互联网市场竞争不断加剧,加之国家多项“走出去”政策的推动,越来越多的中国互联 ...

  2. container injection——容器技术

    (一)容器技术为什么出现 在很久很久以前,想要在线上服务器部署一个应用,首先需要购买一个物理服务器,在服务器安装一个操作系统,然后安装好应用所需要的各种依赖环境,最后才可以进行应用的部署,而且一台服务 ...

  3. 不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式

    作者 | 王国梁  Kubernetes 社区成员与项目维护者原文标题<Kubernetes 应用之道:让 Kubernetes落地的"三板斧">,首发于知乎专栏:进击 ...

  4. Kubernetes行业调研报告:多集群、多云部署成企业首选策略

    新兴的多集群.多云部署成为首选的企业策略,而边缘部署则呈上升趋势 2019年11月5日,业界采用最广泛的Kubernetes管理平台创造者Rancher Labs(以下简称Rancher)发布了首份调 ...

  5. Kubernetes三大落地姿势,你pick谁?

    Kubernetes是面向企业的开源容器编排工具的事实标准,它提供了应用部署.扩展.容器管理等功能.经过几年的发展,Kubernetes已成为云计算和现代IT基础架构的通用平台,得到广泛应用进入产业落 ...

  6. 容器服务如何在企业客户落地?Rancher 解决之道分享

    Docker 的优势和趋势我想不必再赘述,那么对于非互联网公司的传统企业客户,以及我们大量的围绕企业客户做集成.交付解决方案的服务提供商,需要考虑的一个问题就是怎么样把容器技术以高质量.低成本.易维护 ...

  7. Kubernetes企业安全

    导读 所有利益相关者预先参与一个布局良好的计划,这是构建更安全的容器环境的第一步.如今,容器仍然是应用程序部署和迁移的主流技术.行业专家Paul Rubens将其分解为可以理解的几个部分——陷阱.容器 ...

  8. 容器、容器集群管理平台与 Kubernetes 技术漫谈

    原文:https://www.kubernetes.org.cn/4786.html 我们为什么使用容器? 我们为什么使用虚拟机(云主机)? 为什么使用物理机? 这一系列的问题并没有一个统一的标准答案 ...

  9. [5.19 线下活动]Docker Meetup杭州站—拥抱Kubernetes,容器深度实践

    对本次线下活动感兴趣的朋友,欢迎点击此处报名,领取免费票. 今年3月,Docker刚刚过完5岁生日,五年期间,Docker也逐渐在技术和实践方面趋于成熟,更是在去年年底主动拥抱Kubernetes. ...

随机推荐

  1. 第六次作业 orm整合 接口

    结合以前一个项目,将普通的jdbc进行了相关整合,全部改写成了hibernate接口 项目名称:短视频分享平台 主要功能:用户模块:注册.登录.编辑资料.查看用户相关 分类模块:分类添加.查看 视频共 ...

  2. pychram使用技巧

    1.代码添加断点 点击对应行代码,按ctrl+F8,即可添加断点 2.查看内置函数的源码 点击对应函数后按crtl+B

  3. 【13】python time时间模块知识点备查

    表示时间的三种形式 # 时间模块 '''UTC(世界协调时间):格林尼治天文时间,世界标准时间,在中国来说是UTC+8DST(夏令时):是一种节约能源而人为规定时间制度,在夏季调快1个小时 时间的表示 ...

  4. Android Handler 内存泄漏,文末消息机制的小总结

    1. 内存泄漏的Activity public class MainActivity extends AppCompatActivity { private static final int MESS ...

  5. css多种方法实现已知宽度和未知宽度的元素水平垂直居中

    // html <div class="box-wrapper"> <div class="box"> 内部box <p>更 ...

  6. 在react中使用intro.js的的一些经验

    react逐渐热了起来,但是新的东西毕竟前辈的经验少一些,前段时间自己在react中用到intro.js时,得到的资料甚少,摸索后便将一些心得记录下来了~ 1 intro.js的引入,这一点请看上一篇 ...

  7. Redis系列七:redis持久化

    redis支持RDB和AOF两种持久化机制,持久化可以避免因进程退出而造成数据丢失 一.RDB持久化 RDB持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,有手动触发和自动触发 手动触发 ...

  8. MyBatis实战之配置

    MyBatis最重要的配置也就两个,一个是mybatis-config.xml,又称MyBatis的全局配置,另一个就是XXXDao.xml或XXXMapper.xml映射配置. mybatis-co ...

  9. 飞冰ICE

    一. 飞冰目标与愿景(同时也概况飞冰是什么) 飞冰是一套基于 React 的中后台应用解决方案,在阿里巴巴内部,已经有 270 多个来自几乎所有 BU 的项目在使用.经过 2 年的发展,飞冰已经是中后 ...

  10. WorldWind源码剖析系列:图像助手类ImageHelper

    图像助手类ImageHelper封装了对各种图像的操作.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: public static bool IsGdiSupportedImag ...