kubenetes从入门到上天系列第二十六篇:Kubernetes的Istio服务网格实战

一:快速入门Istio

1:什么是Istio

Istio 是运行于分布式应用程序之上的非侵入式(无代码入侵)服务网格系统,它的主要目的是为了更好更轻松的解决服务治理问题(Istio 是一套非侵入式一站式服务治理解决方案)。

Istio 的实现原理是,为每个微服务部署一个 Sidecar(边车),代理微服务之间的所有网络通信。Istio 是一个与 Kubernetes 紧密结合的适用于云原生场景的 Service Mesh 形态的用于服务治理的开放平台。

这里的关键字 "治理" 不限于 "微服务治理" 的范畴,任何服务只要服务间有访问,如果需要对服务间的访问做管理,就可以使用 Istio。根据 Istio 官方的介绍服务治理涉及到 "连接"、"安全"、"控制"、"观察",中间的四个动词就是 Istio 的主要功能。

Service Mesh(服务网格) 是一个专门处理服务间通信的基础设施层 ,负责服务之间的网络调用、熔断、限流、监控、安全等治理能力,且对业务代码无侵入

  • 连接(Connect):智能控制服务之间的调用流量,能够实现灰度升级、AB 测试和蓝绿部署等功能。
  • 安全加固(Secure):自动为服务之间的调用提供认证、授权和加密。
  • 控制(Control):应用用户定义的 policy,保证资源在消费者中公平分配。
  • 观察(Observe):查看服务运行期间的各种数据,比如日志、监控和 tracing(跟踪),了解服务的运行情况。

2:Istio能做什么?

通过负载均衡、服务间的身份验证、监控等方法,Istio 可以轻松地创建一个已经部署了服务的网络,而服务的代码只需很少更改甚至无需更改。通过在整个环境中部署一个特殊的 sidecar 代理为服务添加 Istio 的支持,而代理会拦截微服务之间的所有网络通信,然后使用其控制平面的功能来配置和管理 Istio。

Istio 的主要功能如下:

  1. 服务发现(discovery)。
  2. 负载均衡(load balancing)。
  3. 故障恢复(failure recovery)。
  4. 服务度量(metrics)。
  5. 服务监控(monitoring)。
  6. A/B 测试(A/B testing)。
  7. 灰度发布(canary rollouts)。
  8. 限流限速(rate limiting)。
  9. 访问控制(access control)。
  10. 身份认证(end-to-end authentication)。

从场景来看,Kubernetes 已经提供了非常强大的应用负载的部署、升级、扩容等运行管理能力。Kubernetes 中的 Service 机制也已经可以做服务注册、服务发现和负载均衡,支持通过服务名访问到服务实例。

从微服务的工具集观点来看,Kubernetes 本身是支持微服务的架构,在 Pod 中部署微服务很合适,也已经解决了微服务的互访互通问题,但对服务间访问的管理如服务的熔断、限流、动态路由、调用链追踪等都不在 Kubernetes 的能力范围内。那么,如何提供一套从底层的负载部署运行到上层的服务访问治理端到端的解决方案?目前,最完美的答案就是在 Kubernetes 上叠加 Istio。

相关推荐
Lucas6492 小时前
K8S-从理论到实战
云原生·容器·kubernetes
JavaEdge.2 小时前
openclaw 本地部署实战:含网关启动 + 本地模型接入完整步骤
java·openclaw
loserwang2 小时前
Fluss#1386: 从日志恢复中的 OutOfOrder 来看 LEO、HW 与 Checkpoint 的区别
java·后端
毕设源码-邱学长2 小时前
【开题答辩全过程】以 咖啡馆管理系统的设计与实现为例,包含答辩的问题和答案
java
上海运维Q先生2 小时前
K8s环境下在Pod中运行Pod中没有的命令-----nsenter
容器·kubernetes·dubbo
NGC_66112 小时前
JDK1.7 与 JDK1.8 ConcurrentHashMap:从分段锁到桶级锁的进化
java·开发语言
leaves falling2 小时前
C++类和对象(3)(初始化列表,类型转换,static成员,友元)
java·开发语言·c++
色空大师2 小时前
【网站开发-java】
java·linux·服务器·开发语言·网站·搭建网站
于先生吖2 小时前
远程考试系统搭建 JAVA 国际版源码与多国语言集成方案
java·开发语言