《深入理解 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 |
---|---|---|
配置管理 | 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相关推荐
- 《深入理解 Spring Cloud 与微服务构建》第九章 熔断器 Hystrix
<深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix 文章目录 <深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix ...
- 《深入理解 Spring Cloud 与微服务构建》第二章 微服务应该具备的功能
<深入理解 Spring Cloud 与微服务构建>第二章 微服务应该具备的功能 文章目录 <深入理解 Spring Cloud 与微服务构建>第二章 微服务应该具备的功能 一 ...
- 《深入理解 Spring Cloud 与微服务构建》第一章 微服务简介
<深入理解 Spring Cloud 与微服务构建>第一章 微服务简介 文章目录 <深入理解 Spring Cloud 与微服务构建>第一章 微服务简介 一.单体架构及其存在的 ...
- 《深入理解Spring Cloud与微服务构建》出版啦!
作者简介 方志朋,毕业于武汉理工大学,CSDN博客专家,专注于微服务.大数据等领域,乐于分享,爱好开源,活跃于各大开源社区.著有<史上最简单的Spring Cloud教程>,累计访问量超过 ...
- 《深入理解 Spring Cloud 与微服务构建》第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统
<深入理解 Spring Cloud 与微服务构建>第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统 文章目录 <深入理解 Spring Cl ...
- 《深入理解 Spring Cloud 与微服务构建》第十七章 使用 Spring Cloud OAuth2 保护微服务系统
<深入理解 Spring Cloud 与微服务构建>第十七章 使用 Spring Cloud OAuth2 保护微服务系统 文章目录 <深入理解 Spring Cloud 与微服务构 ...
- 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解
<深入理解 Spring Cloud 与微服务构建>第十六章 Spring Boot Security 详解 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...
- 《深入理解 Spring Cloud 与微服务构建》第十五章 微服务监控 Spring Boot Admin
<深入理解 Spring Cloud 与微服务构建>第十五章 微服务监控 Spring Boot Admin 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...
- 《深入理解 Spring Cloud 与微服务构建》第十四章 服务链路追踪 Spring Cloud Sleuth
<深入理解 Spring Cloud 与微服务构建>第十四章 服务链路追踪 Spring Cloud Sleuth 文章目录 <深入理解 Spring Cloud 与微服务构建> ...
- 《深入理解 Spring Cloud 与微服务构建》第十三章 配置中心 Spring Cloud Config
<深入理解 Spring Cloud 与微服务构建>第十三章 配置中心 Spring Cloud Config 文章目录 <深入理解 Spring Cloud 与微服务构建>第 ...
最新文章
- 模拟usb重新插拔_Android 10带来黑科技 检测手机USB接口是否有液体或者是否过热...
- 用户二次登陆,干掉第一次登录的session
- 蒙娜丽莎,品牌创新的探索者
- 帮助你生成响应式布局的CSS模板 - xyCSS
- Protocol Buffer技术详解(C++实例)
- java定义一个方法,返回整数数组的元素最大值
- eclipse的maven配置及本地仓库配置
- JSON.parse()、JSON.stringify()和eval()的作用
- linux tick异常变化,linux tickGet()
- 2017-12-24 手机编程环境初尝试-用AIDE开发Android应用
- Dubbo+Zookeeper视频教程
- c51单片机汉字查表c语言,AT89C51单片机驱动液晶显示汉字C语言
- 这几种常见的工业机器人编程方法你都知道吗
- 优雅华美 简约奢华 轻奢风
- Fuel-openstack的搭建(二)
- 选购电脑cpu 酷睿 区别 GPU选择
- oracle 列转行 带逗号_oracle wm_concat 列转行 逗号分隔
- 我的V360i手机软件、游戏以及手机网站等
- Lena/Lenna/莱娜·瑟德贝里
- python解决一元二次方程
热门文章
- 20172301 2018-2019-1《程序设计与数据结构》课程总结
- 2018数学建模国赛总结(A题/编程选手视角)
- Hough transform(霍夫变换)
- webpack 编译完成执行代码
- c/s 给 服务器上传文件(c/s和b/s互传文件)
- c#中怎么禁用和开启无线网卡?
- wincc按钮控制的vb脚本_VB操作wincc脚本心得.docx
- Linux内核中TCP协议实现的关键数据结构
- Hystrix-超时机制和断路器模式
- linux环境用tar报错,Linux环境使用TAR命令快速部署安装Oracle