失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes

《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes

时间:2024-03-22 15:22:07

相关推荐

《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes

《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes

文章目录

《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes一、Kubernetes 简介二、与 Spring Cloud 对比

一、Kubernetes 简介

Kubernetes 是一个容器集群管理系统,为容器化的应用程序提供部署运行、维护、扩展、资源调度、服务发现等功能

Kubernetes 是 Google 运行 Borg 大规模系统达 15 年之久的一个经验总结。Kubernetes 结合了社区的最佳创意和时间,旨在帮助开发人员将容器打包、动态编排,同时帮助各大公司向微服务方向进行技术演进

它具有以下特点:

Planet Scale(大容量):使用 Kubernetes 的各大公司(包括 Google)每周与逆行了数十亿个容器,这些容器的平台采用同样的设计原则。这些平台在不增加 DevOps 团队成员的情况下,可以让容器数量增加,节省了人力成本,达到了复用性Never Outgrow(永不过时):无论容器是运行在一个小公司的测试环境中,还是运行在一个全球化企业的大型系统里,Kubernetes 都能灵活地满足复杂的需求。同时,无论业务多么复杂,Kubernetes 都能稳定地提供服务Run Anywhere(随时随地运行):Kubernetes 是开源的,可以自由地利用内部、混合或者公共云的基础组件进行部署,让开发者可以将更多的时间和精力投入在业务上,而不是服务部署上

Kubernetes 提供的功能:

Automatic Binpacking(自动包装):根据程序自身的资源需求和一些其他方面的需求自动配置容器。Kubernetes 能够最大化地利用机器的工作负载,提高资源的利用率Self-healing(自我修复):容器失败自动重启,当节点处于 “死机” 的状态时,它会被替代并重新编排;当容器达到用户设定的无响应的阈值时,它会被剔除,并且不让其他容器调用它,直到它恢复服务Horizontal Scaling(横向扩展):可以根据机器的 CPU 的使用率来调整容器的数量,只需开发人员在管理界面上输入几个命令即可Service Discovery and Load Balancing(服务发现和负载均衡):在不需要修改现有的应用程序代码的情况下,便可使用服务的发现机制。Kubernetes 为容器提供了一个虚拟网络环境,每个容器拥有独立的 IP 地址和 DNS 名称,容器之间实现了负载均衡Automated Rollouts and Rollbacks(自动部署或回滚):Kubernetes 支撑滚动更新模式,能逐步替换掉当前环境的应用程序和配置,同时监视应用程序运行状况,以确保不会同时杀死所有实例。如果出现问题,Kubernetes 支持回滚更改Secret and Configuration Management(配置管理):部署和更新应用程序的配置,不需要重新打开镜像,并且不需要在堆栈中暴露配置Storage Orchestration(存储编排):自动安装所选择的存储系统,无论是本地存储、公共云提供商(如 GCP 或 AWS),还是网络存储系统(如 NFS、iSCSI、Gluster、Ceph、Cinder 或 Flocker)Batch execution(批量处理):除了服务之外,Kubernetes 还可以管理批量处理和 CI 的工作负载,如果需要,可以替换容器,如 NFS、iSCSI、Gluster、Ceph、Cinder 或 Flocker 等

从Kubernetes 提供的功能来看,Kubernetes 完全可以成为构建和部署微服务的一个工具,它是从服务编排上实现的,而不是代码实现的

二、与 Spring Cloud 对比

Spring Cloud 是一个构建微服务的框架,而 Kubernetes 是通过对运行的容器的编排来实现构建微服务的。两者从构建微服务的角度和实现方式有很大的不同,但它们提供了构建微服务所需的全部功能。从提供的微服务所需的功能上看,两者不分上下

Spring Cloud 通过众多的类库来实现微服务系统所需的各个组件,同时不断集成优秀的组件,所以 Spring Cloud 组件是非常完善的。Spring Cloud 基于 Spring Boot 框架,有快速开发、快速部署的优点。对于 Java 开发者来说,学习 Spring Cloud 的成本不高

Kubernetes 在编排上解决微服务的各个功能,例如服务发现、配置管理、负载均衡、容错等。Kubernetes 不局限于 Java 平台,也不局限于语言,开发者可以自由选择开发语言进行项目开发

与 Kubernetes 相比,Spring Cloud 具有以下优点:

采用 Java 语言开发,基于 Spring 平台,继承了 Spring Boot 快速开发的优势,是 Java 程序员实现微服务的最佳实践Spring Cloud 有大量的类库和资源,基本上能解决所有可能出现的问题

与 Kubernetes 相比,Spring Cloud 具有以下缺点:

依赖于 Java 语言,不支持跨语言Spring Cloud 需要在代码中关注微服务的功能点,例如服务发现、负载均衡等,Kubernetes 则不需要

Kubernetes 的优点:

Kubernetes 支持多种语言,并且是一个容器管理平台。Kubernetes 使程序容器化,并在容器管理上提供了微服务的功能,例如配置管理、服务发现、负载均衡等。Kubernetes 能够被应用于多种场合,例如程序开发、测试环境、创建环境等Kubernetes 除了提供基本的构建微服务的功能外,还提供了环境、资源限制、管理应用程序的生命周期的功能。Kubernetes 更像是一个平台,而 Spring Cloud 是一个框架

Kubernetes 的缺点:

Kubernetes 面向 DevOps 人员,普通的开发人员需要学习很多这方面的只是,学习成本非常高Kubernetes 仍然是一个相对较新的平台,发展十分迅速。新特性更新得快,所以需要 DevOps 人员跟进,不断地学习

Spring Cloud 尝试从 Java 类库来实现微服务的所有功能,而 Kubernetes 尝试从容器编排上实现所有的微服务功能,两者的实现角度和方式不一样。两者最终的实现在功能和效果上不分胜负,但从实现的方式上来讲,Kubernetes 略胜一筹。Kubernetes 面向 DevOps 人员,学习成本高。Spring Cloud 有很多的类库,以 Spring 为基础,继承了 Spring Boot 快速开发的优点,为 Java 程序员开发微服务提供了很好的体验,学习成本也较低

如果觉得《《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。