写点什么

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

作者:巨子嘉
  • 2021 年 12 月 20 日
  • 本文字数:1992 字

    阅读完需:约 7 分钟

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

1. Kubernetes 容器平台

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

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

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

1.1. Kubernetes 容器平台

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

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

  • 更敏捷的交付效率,释放研发人员耗费在环境调试过程,更加聚焦业务本身逻辑

  • 更低服务器资源成本,容器化运行可以大幅提升底层基础资源的使用效率。

  • 更大范围的差异化设施抽象统一,容器适配能力更强,容器几乎可以运行市面所有常见设备。

 

  微服务架构是当前最为流行的软件架构,提倡模块化,松耦合的设计理念,一般中等微服务架构项目,模块数量可达几十到上百的规模,通过手工部署运维几乎不肯能;针对这种复杂应用程序,尤其是组件数量比较多的场景,容器 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 需要组装,已经投产的集群升级困难

用户头像

巨子嘉

关注

云原生,DevOps 2019.09.20 加入

还未添加个人简介

评论

发布
暂无评论
容器技术正在颠覆传统,重构整个软件世界