容器技术正在颠覆传统,重构整个软件世界

temple_zhy
发布于 2022-9-16 11:15
浏览
0收藏

作者 | 巨子嘉

来源 | 巨子嘉(ID:juzijia-club)

转载请联系授权(微信ID:Janusjia)

容器技术正在颠覆传统,重构整个软件世界,改变软件技术架构,团队交付效率以及交付方式。通过屏蔽底层复杂异构的基础设施环境,保障软件一致性运行时环境,让研发人员更加高效的聚焦在业务逻辑。

虽然容器通过颠覆式创新屏蔽底层复杂性,但是对容器部署运维给容器集群本身的运维团队带来了新的挑战。与传统虚拟机相比,极短的部署运行周期,更高效的资源使用率。容器管理着海量的快周期轮转的对象,要求更彻底的自动化,策略启动的管理能力。

许多团队都开始转向Kubernetes容器,通过容器编排及管理能力,轻松维护生产、开发和测试环境,Kubernetes已成为容器编排和管理的事实标准,企业要意识到容器将成为未来关键的基础设施平台。

1.1.Kubernetes容器平台

容器技术正在颠覆传统,重构整个软件世界-鸿蒙开发者社区

Kubernetes是一个开源容器编排平台,管理大规模分布式容器化软件应用,Kubernetes 提供了统一的API接口,调用API可是轻松实现Web应用、批处理作业和数据库的部署。Kubernetes中的软件应用被打包成与环境完全分离的容器镜像,Kubernetes会自动配置应用并维护跟踪资源分配。

Kubernetes是谷歌的第三代容器管理系统,是Borg独特的控制器和Omega灵活的调度器的组合。相较传统VM虚拟化,容器是轻量级虚拟化技术,对软件应用而言,容器带来一下价值:

  1. 更敏捷的交付效率,释放研发人员耗费在环境调试过程,更加聚焦业务本身逻辑
  2. 更低服务器资源成本,容器化运行可以大幅提升底层基础资源的使用效率。
  3. 更大范围的差异化设施抽象统一,容器适配能力更强,容器几乎可以运行市面所有常见设备。
    微服务架构是当前最为流行的软件架构,提倡模块化,松耦合的设计理念,一般中等微服务架构项目,模块数量可达几十到上百的规模,通过手工部署运维几乎不肯能;针对这种复杂应用程序,尤其是组件数量比较多的场景,容器Kubernetes极大地简化了部署更新工作。通过自动化容器配置、简化扩展和管理资源分配等来实现生产级容器编排治理。

1.2.Kubernetes管理及编排

容器技术正在颠覆传统,重构整个软件世界-鸿蒙开发者社区

调度器和调度 :Kubernetes调度程序会实时监测集群健康状态及运行负载情况,通过调用策略智能的将新容器安置在合适的位置。

服务发现和负载均衡:微服务架构的应用,模块越多服务跟踪和管理的难度就越大。Kubernetes自动管理服务发现。实时记录会服务列表,同时还会检查服务的健康状况,动态调整服务列表。Kubernetes还包含了负载均衡。负载均衡器是在应用副本之间分配和协调流量的关键组件。Kubernete支持整合自定义负载均衡解决方案,如HAProxy,Nignx以及共有LB服务。
资源管理:Kubernetes调度程序通过CPU和内存等基础资源使用率,对整个集群的应用进行合理调度,保证整个集群应用相对稳定。
1.3.Kubernetes优势

弹性扩展:Kubernetes通过Cluster Autoscaler和Horizontal Pod Autoscaler功能,结合用户配置策略,实现集群自动弹性伸缩能力。
可移植性:Kubernetes可以在任何地方运行,无论是私有数据中心,公共云还是公共和私有云的混合云底层基础设施。
一致性部署:容器体现了不可变基础设施的理念,运行应用所需的所有依赖项和运行指令都与容器打包在一起。一致性意味着开发人员花更少的时间进行调试,而将主要精力用于交付业务价值。

研发运维解耦:产品开发团队重视创新,快速交付业务需求;而运维团队重视稳定性,对变化比较保守。容器应用的标准化,彻底解耦研发运维过程;同时Kubernetes的智能自动化,极大的降低运维的门槛,减轻运维压力。
1.4.Kubernetes基本架构

容器技术正在颠覆传统,重构整个软件世界-鸿蒙开发者社区

控制平面充当Kubernetes集群的大脑,调度、服务发现、负载均衡和资源管理能力都由控制平面提供,包含核心组件如下:

API server:任何内部或外部请求都会发送到 API server。 再有API server确定请求是否有效再转发到对应的组件。
etcd:etcd 是 Kubernetes 的关键组件,存储集群状态和配置。如果控制平面是大脑,那么etcd就是存储记忆的地方。
Worker nodes:工作节点是Kubernetes集群中真正承接业务应用运行负载的,单个集群都会有多个工作节点,也可通过Kubernetes 快速扩展工作节点。
Kubelet:kubelet是运行在每个工作节点上,与控制平面通信并执行管理操作。 如果控制平面是大脑,那么kubelet就是手臂。

Container runtime engine:容器运行时引擎运行符合OCI标准的应用程序。 它是可移植容器和底层 Linux 内核之间的管道。
1.5.Kubernetes的不足

容器技术正在颠覆传统,重构整个软件世界-鸿蒙开发者社区

虽然Kubernetes提供了可移植性、可扩展性和自动化、策略驱动的管理。从整个软件全生命周期来看,缺失在生产中构建、运行和扩展容器所需的能力,但更多的是偏底层运维管理平台。

还有在早期,为了能快速适配各种场景,Kubernetes通过标准来扩展平台的能力。可以使用自定义资源(CRD),容器存储接口(CSI)和容器网络接口(CNI)轻松适配复杂环境。但是同时也像Android一样,碎片化太严重,各个扩展组件能力层次不齐,导致Kubernetes需要组装,已经投产的集群升级困难。

分类
标签
已于2022-9-16 11:15:48修改
收藏
回复
举报
回复
    相关推荐