k8s 服务网格(Service Mesh)

k8s 服务网格(Service Mesh)

希腊语言中大概是风帆的意思, 发音 [iːst’iəʊ] ,相当于中文的 伊斯特亿欧。

如果用一句话来解释什么是服务网格,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。

K8s 服务网格配置发现协议

K8s 服务网格配置发现协议

  • MCP是基于订阅的配置分发API。
  • 配置使用者(即sink)从配置生产者(即source)请求更新资源集合.添加,更新或删除资源时,source会将资源更新推送到sink.
  • sink积极确认资源更新,如果sink接受,则返回ACK,如果被拒绝则返回NACK,例如: 因为资源无效。
  • 一旦对先前的更新进行了ACK/NACK,则源可以推送其他更新.该源一次只能运行一个未完成的更新(每个集合).
  • MCP是一对双向流gRPC API服务(ResourceSource和ResourceSink)。

xDS REST和gRPC协议 Envoy通过文件系统或查询一台或多台管理服务器发现其各种动态资源。这些发现服务及其相应的API统称为xDS。通过预订,指定要监视的文件系统路径,启动gRPC流或轮询REST-JSON URL来请求资源。后两种方法涉及发送带有DiscoveryRequest 原型有效负载的请求.在所有方法中,资源都是通过DiscoveryResponse原型有效负载交付的 。我们在下面讨论每种订阅类型。

K8s 服务治理

K8s 服务治理

微服务治理的手段

  • Apache Dubbo 在早期的微服务框架中,很多用户会选择 Dubbo,国内成熟案例也很多。然而 Dubbo 自身的服务治理能力是很弱的,需要自行整合多种服务治理插件
  • Spring Cloud 尽管 Spring Cloud 全家桶功能多可以全套搞定,社区也活跃,文档也丰富,但是 Spring Cloud 最大的问题是 Java 语言绑定和业务侵入性强
  • Nacos Nacos 是阿里巴巴的开源的产品,现在是 SpringCloud 中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。Nacos是用来发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos的一大优势是整合了注册中心、配置中心功能。相当于 Polaris + Rainbow。
  • Istio 新型的服务网格代表 Istio 巧妙地解决了 Dubbo 和 Spring Cloud 的缺点问题,它通过 Sidecar 来进行流量的劫持代理,做到了无侵入和语言无关。但正是因为这种代理模式,导致了其流量性能损耗问题,同时也缺乏了内部 SDK 支持与精细化的方法级治理。
  • Polaris Mesh 北极星是一个支持多语言和多框架的服务发现和治理平台,致力于解决分布式和微服务架构中的服务管理、流量管理、故障容错、配置管理和可观测性问题,针对不同的技术栈和环境提供服务治理的标准方案和最佳实践。

两者虽然都支持: 路由、熔断、重试 等服务治理手段, 但两者的实现原理完全不同。 区别在于:

K8s 跨集群通信

K8s 跨集群通信

分两种情况讨论:

不同集群间Node互通

  • 如公司内部多个集群 或者
  • 同一个云服务商如腾讯云下的多个集群。

不同集群间Node不互通

  • 如公司内集群 和 腾讯公有云集群。
  • 不同云服务商之间的集群,如腾讯云、阿里云。

不同集群间Node互通

k8s 网络插件 Calico

k8s 网络插件 Calico

Calico 是一个纯三层的数据中心网络方案(不需要 Overlay),并且与 OpenStack、Kubernetes、AWS、GCE 等 IaaS 和容器平台都有良好的集成。