Skip to content

Commit

Permalink
更新 ServiceMesh
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Feb 29, 2024
1 parent db59f12 commit 2e38a5b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
18 changes: 15 additions & 3 deletions ServiceMesh/ServiceMesh-and-Kubernetes.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
# 8.4 服务网格与 Kubernetes

承载应用 Workload 的形式已经从”物理机“过渡到”容器“。
现在,承载应用 Workload 的形式已经从”物理机“过渡到”容器“。容器意味着创建(包括初始化)和销毁高度自动化,且具备极强弹性。此时,基础设施的功能(服务发现、负载均衡、熔断限流、路由等)与业务代码的集成需要在低成本前提下保证相同的生命周期。物理机时代,基础设施功能添加到业务代码的方式只能选择 SDK,而容器时代,基础设施的功能添加到业务代码的最佳方式变成了 Sidecar

容器意味着创建(包括初始化)和销毁高度自动化,且具备极强弹性。此时,基础设施的功能(服务发现、负载均衡、熔断限流、路由等)与业务代码的集成需要在低成本前提下保证相同的生命周期。物理机时代,基础设施功能添加到业务代码的方式只能选择 SDK,而容器时代,基础设施的功能添加到业务代码的最佳方式变成了 Sidecar。
Kubernetes 通过管理基础设施(Pod)为微服务提供了可扩展、高弹性的部署粗粒度服务。而 ServiceMesh 通过 Pod 内的 Sidecar Proxy 实现透明代理,通过更接近微服务应用层的抽象,实现服务间的流量、安全性和可观察性细粒度管理

Kubernetes 的本质是应用的生命周期管理,具体来说就是部署和管理(扩缩容、自动恢复、发布)。Kubernetes 为微服务提供了可扩展、高弹性的部署和管理平台。Service Mesh 的基础是透明代理,通过 sidecar proxy 拦截到微服务间流量后再通过控制平面配置管理微服务的行为。Service Mesh 将流量管理从 Kubernetes 中解耦,Service Mesh 内部的流量无需 kube-proxy 组件的支持,通过为更接近微服务应用层的抽象,管理服务间的流量、安全性和可观察性。

如下图所示,Kubernetes 与 Servicemesh 结合,提供一套从底层的负载部署运行到上层的服务访问治理端到端的解决方案。

<div align="center">
<img src="../assets/ServiceMesh-and-Kubernetes.png" width = "450" align=center />
<p>图片来源于《云原生服务网格Istio》</p>
</div>


比较传统的SDK与 Istio ,可以看出 Istio 最大化地利用了Kubernetes这个基础设施,与之叠加在一起形成了一个更强大的用于进行服务运行和治理的基础设施,并提供了更透明的用户体验。


|比较观点| Istio 部署在 Kubernetes | SDK 开发的服务部署在 Kubernetes |
|:--|:--|:--|
|架构设计| 基于 Kubernetes 能力设计 | 和 Kubernetes 无关|
| 服务发现| 使用和 Kubernetes 一致的服务发现 | 得搭建单独的服务发现,两套服务发现存在不一致的问题,Kubernetes 的 Pod 迁移会引起重新服务注册。|
| 使用体验| 完全的 Kubernetes 使用体验。 Sidecar 自动注入,业务无感知| 和 Kubernetes 无结合,Kubernetes 只是提供了运行环境|
| 控制面 | 无需额外的 APIServer 和 规则策略的定义,基于 CRD 扩展| 需安装单独的控制面来维护管理规则 |

4 changes: 2 additions & 2 deletions ServiceMesh/summary.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
:::


Kubernetes 的崛起标志着微服务时代的新篇章,通过基础设施层解决分布式架构问题,微服务服务治理也开启了全新的进化,并衍生服务间通信的基础设施层 ServiceMesh。当非侵入性的 ServiceMesh 技术从萌芽走向成熟,当 Istio 横空出世,人们才惊觉:原来微服务也并非只有侵入性一种“玩法”
Kubernetes 的崛起标志着微服务时代的新篇章,通过基础设施层解决分布式架构问题,微服务服务治理也开启了全新的进化,并衍生服务间通信的基础设施层 ServiceMesh。2018年,Bilgin lbryam 在 InfoQ 发了一篇名为 《MicroService in a Post-Kubernetes Era 》的文章,文章虽然没有明确“ 后 Kubernetes 时代的微服务” 是什么,但从文章也能看出作者的观点是:在后 Kubernetes 时代,服务网格技术已经完全取代了通过使用软件库来实现网络运维的方式

2018年,Bilgin lbryam 在 InfoQ 发了一篇名为 《MicroService in a Post-Kubernetes Era 》的文章,文章虽然没有明确“ 后 Kubernetes 时代的微服务” 是什么,但从文章也能看出作者的观点是:在后 Kubernetes 时代,服务网格技术已经完全取代了通过使用软件库来实现网络运维的方式
当非侵入性的 ServiceMesh 技术从萌芽走向成熟,当 Istio 横空出世,并如此那般的与 Kubernetes 天生契合,人们惊觉:原来微服务治理的实现还能如此优雅

0 comments on commit 2e38a5b

Please sign in to comment.