《深入理解 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
配置管理 Config Kubernetes ConfigMap
服务发现 Eureka、Consul、Zookeeper Kuberneets Services
负载均衡 Ribbon Kubernetes Services
网关 Zuul Kubernetes Services
分布式追踪 Spring Cloud Sleuth Open tracing
容错 Hystrix Kubernetes Health Check
安全模块 Spring Cloud Security
分布式日志 ELK EFK
任务管理 Spring Batch Kubernetes Jobs

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相关推荐

  1. 《深入理解 Spring Cloud 与微服务构建》第九章 熔断器 Hystrix

    <深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix 文章目录 <深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix ...

  2. 《深入理解 Spring Cloud 与微服务构建》第二章 微服务应该具备的功能

    <深入理解 Spring Cloud 与微服务构建>第二章 微服务应该具备的功能 文章目录 <深入理解 Spring Cloud 与微服务构建>第二章 微服务应该具备的功能 一 ...

  3. 《深入理解 Spring Cloud 与微服务构建》第一章 微服务简介

    <深入理解 Spring Cloud 与微服务构建>第一章 微服务简介 文章目录 <深入理解 Spring Cloud 与微服务构建>第一章 微服务简介 一.单体架构及其存在的 ...

  4. 《深入理解Spring Cloud与微服务构建》出版啦!

    作者简介 方志朋,毕业于武汉理工大学,CSDN博客专家,专注于微服务.大数据等领域,乐于分享,爱好开源,活跃于各大开源社区.著有<史上最简单的Spring Cloud教程>,累计访问量超过 ...

  5. 《深入理解 Spring Cloud 与微服务构建》第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统

    <深入理解 Spring Cloud 与微服务构建>第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统 文章目录 <深入理解 Spring Cl ...

  6. 《深入理解 Spring Cloud 与微服务构建》第十七章 使用 Spring Cloud OAuth2 保护微服务系统

    <深入理解 Spring Cloud 与微服务构建>第十七章 使用 Spring Cloud OAuth2 保护微服务系统 文章目录 <深入理解 Spring Cloud 与微服务构 ...

  7. 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解

    <深入理解 Spring Cloud 与微服务构建>第十六章 Spring Boot Security 详解 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  8. 《深入理解 Spring Cloud 与微服务构建》第十五章 微服务监控 Spring Boot Admin

    <深入理解 Spring Cloud 与微服务构建>第十五章 微服务监控 Spring Boot Admin 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  9. 《深入理解 Spring Cloud 与微服务构建》第十四章 服务链路追踪 Spring Cloud Sleuth

    <深入理解 Spring Cloud 与微服务构建>第十四章 服务链路追踪 Spring Cloud Sleuth 文章目录 <深入理解 Spring Cloud 与微服务构建> ...

  10. 《深入理解 Spring Cloud 与微服务构建》第十三章 配置中心 Spring Cloud Config

    <深入理解 Spring Cloud 与微服务构建>第十三章 配置中心 Spring Cloud Config 文章目录 <深入理解 Spring Cloud 与微服务构建>第 ...

最新文章

  1. 模拟usb重新插拔_Android 10带来黑科技 检测手机USB接口是否有液体或者是否过热...
  2. 用户二次登陆,干掉第一次登录的session
  3. 蒙娜丽莎,品牌创新的探索者
  4. 帮助你生成响应式布局的CSS模板 - xyCSS
  5. Protocol Buffer技术详解(C++实例)
  6. java定义一个方法,返回整数数组的元素最大值
  7. eclipse的maven配置及本地仓库配置
  8. JSON.parse()、JSON.stringify()和eval()的作用
  9. linux tick异常变化,linux tickGet()
  10. 2017-12-24 手机编程环境初尝试-用AIDE开发Android应用
  11. Dubbo+Zookeeper视频教程
  12. c51单片机汉字查表c语言,AT89C51单片机驱动液晶显示汉字C语言
  13. 这几种常见的工业机器人编程方法你都知道吗
  14. 优雅华美 简约奢华 轻奢风
  15. Fuel-openstack的搭建(二)
  16. 选购电脑cpu 酷睿 区别 GPU选择
  17. oracle 列转行 带逗号_oracle wm_concat 列转行 逗号分隔
  18. 我的V360i手机软件、游戏以及手机网站等
  19. Lena/Lenna/莱娜·瑟德贝里
  20. python解决一元二次方程

热门文章

  1. 20172301 2018-2019-1《程序设计与数据结构》课程总结
  2. 2018数学建模国赛总结(A题/编程选手视角)
  3. Hough transform(霍夫变换)
  4. webpack 编译完成执行代码
  5. c/s 给 服务器上传文件(c/s和b/s互传文件)
  6. c#中怎么禁用和开启无线网卡?
  7. wincc按钮控制的vb脚本_VB操作wincc脚本心得.docx
  8. Linux内核中TCP协议实现的关键数据结构
  9. Hystrix-超时机制和断路器模式
  10. linux环境用tar报错,Linux环境使用TAR命令快速部署安装Oracle