架构师·2018 年 4 月刊
InfoQ
InfoQ 编辑部
8324 人已学习
限活动获得
架构师·2018 年 4 月刊
15
15
1.0x
00:00/00:00
登录|注册

Kubernetes 效应

Kubernetes(k8s)在很短的一段时间内走过了很长的一段路。仅仅两年以前,它还需要与 CoreOS 的 Fleet、Docker Swarm、Cloud Foundry Diego、HashiCorp 的 Nomad、Kontena、Rancher 的 Cattle、Apache Mesos、Amazon ECS 等进行竞争,来证明自己比那些产品都要优秀。而现如今已经是完全不同的一幅景象了。其中的一些公司公开宣布了项目的终止并且开始加入到 Kubernetes 阵营中,还有一些公司没有公开宣布自己项目的失败,而是在战略上宣布了对 Kubernetes 的部分支持或者完全整合,这也就意味着他们的容器编排工具将会安静而缓慢地死掉。不论是哪一种情况,k8s 都是最后一个活下来的平台。除此之外,不仅仅是用户和白金赞助商们,越来越多的大公司都将继续加入到 Kubernetes 的生态系统中,将自己的业务完全押注于 Kubernetes 的成功。我们首先能想到的有 Google 的 Kubernetes Engine、Red Hat 的 OpenShift、Microsoft 的 Azure Container Service、IBM 的 Cloud Container Service、Oracle 的 Container Engine。
但是这些意味着什么呢?首先,这意味着开发人员必须要掌握一个与 90% 的容器工作相关的容器编排平台。这是一个学习 Kubernetes 很好的理由。同时这还意味着我们已经深深地依赖于 Kubernetes,Kubernetes 就像容器领域中的 Amazon。在 Kubernetes 上进行设计、实现和运行应用程序可以让你在不同的云提供商、Kubernetes 发行版和服务提供商之间自由地对应用程序进行移动。它能让你有机会找到Kubernetes 认证的开发人员,让他们来开发一个项目并且在以后的运行过程中持续提供支持。Kubernetes 不是 VM,也不是 JVM,它是全新的应用程序可移植层,它是大家共同的选择。

对 Kubernetes 的深度依赖

下图是一个容器化服务的图表,其中表明了该服务对 Kubernetes 的依赖程度:
图 1 Kubernetes 上的应用程序依赖
请注意,我并没有写到 Kubernetes 是应用程序可移植性 API,它是一个层。上图向我们展示了只有显式创建的 k8s 对象才能够调用 k8s API。但事实上,我们与平台之间的关系更加紧密。k8s 提供了一组完整的分布式原语(如 Pod、服务、控制器等),它们能够满足我们的需求并且驱动我们对应用程序的设计。这些新的原语和平台容量决定了我们用来实现未来所有服务的指导设计原则和设计模式。反过来,它们也会影响我们用来应对日常挑战的技术,甚至会影响到我们所谓的“最佳实践”。因此,我们更倾向于将 Kubernetes 视为一个基本的范式,它在多个维度上都有意义,而不仅仅是一个能够与之交互的 API。

Kubernetes 效应

图 2 软件开发生命周期中的 Kubernetes 效应
容器和容器编排工具特性提供了一组新的抽象和原语。为了获得这些原语的最佳价值并衡量它们的效果,我们需要一套新的设计原则来指导我们的实践。带来的结果就是,随着我们更多的使用这些新原语,我们就能更好地解决重复性的问题,能够重新发明轮子。这就是设计模式的用武之地。设计模式为我们提供了如何构建新原语以便更快地解决问题的方法。虽然原则更加抽象、更加基础、变化也更少,但是设计模式可能会受到原语行为变化的影响。平台上的一个新特性可能会使得一个设计模式成为反模式或者不那么相关。除此之外,还有我们每天使用的实践和技术也是如此。这些技术涵盖了从非常细微的技术技巧,到更有效地执行任务,再到更广泛的工作方法和实践方法。当我们发现了一种稍微好用一点的方法能够更快或者更简单地完成任务时,我们就会改进当前的技术和时间。这就是我们和平台互相促进的发展模式。我们为什么要这么做呢?因为,我们这样做就能够利用这个新平台的优势和价值来满足我们自己的需求。从某种意义上来说。Kubernetes 效应是自我强化的,也是多方面的。
在本文的剩余部分,我们将探寻地更深,并且将对每个类别的示例进行研究。

分布式抽象和原语

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kubernetes已成为容器编排工具的主导平台,对软件开发和设计原则产生深远影响。文章探讨了Kubernetes的影响,包括容器设计原则和设计模式,以及与容器相关的最佳实践和技巧。Kubernetes的优势包括自服务环境、动态放置应用程序、声明式服务部署和应用程序弹性。此外,文章还提供了相关资源和作者信息。整体而言,文章深入探讨了Kubernetes对软件开发和设计原则的影响,为读者提供了对Kubernetes技术特点的全面了解。

登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
对 Kubernetes 的深度依赖
Kubernetes 效应
分布式抽象和原语
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部