Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司。它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管理、网络连接以及安全管理等关键能力,无需修改任何代码就能够实现微服务的负载均衡,服务与服务之间的认证授权以及监控。从整个基础设施角度上看,可以将它理解为PaaS平台上的一个面向微服务管理平台的补充。
Istio架构示意图
Istio与KubernetesKubernetes提供了部署、升级和有限的运行流量管理能力;利用service的机制来做服务注册和发现,转发,通过kubeproxy有一定的转发和负载均衡能力。但并不具备上层如熔断、限流降级、调用链治理等能力.
Istio则很好的补齐了k8s在微服务治理上的这部分能力,同时是基于k8s构建的,但不是像SpringCloud Netflix等完全重新做一套。Istio是谷歌微服务治理上的非常关键的一环。
Istio与k8s紧密结合,包括:Sicecar 运行在k8s pod里,作为一个proxy和业务容器部署在一起,部署过程对用户透明。Mesh中要求业务程序的运行感知不到sidecar的存在,基于k8sd的pod的设计这部分做的更彻底,对用户更透明,用户甚至感知不到部署sidecar的这个过程。试想如果是通过VM上部署一个agent,不会有这么方便。
Pilot中包含一个controller,通过list/watch kube-apiserver自动发现K8S中的services、endpoints。它通过在Kubernetes里面注册一个controller来监听事件,从而获取Service和Kubernetes的Endpoint以及Pod的关系,但是在转发层面,不再使用kube-proxy转发了,而是将这些映射关系转换成为pilot自己的转发模型,下发到envoy进行转发。
K8s编排容器服务已经成为一种事实上的标准;因为微服务与容器在轻量、快速部署运维等特征的匹配,微服务运行在容器中也正成为一种标准实践;对于云原生应用,采用Kubernetes构建微服务部署和集群管理能力,采用Istio构建服务治理能力,将逐渐成为应用微服务转型的标准配置。
自行管理Istio与CCE上使用Istio服务网格的对比
华为云 · 云容器引擎CCE(Cloud Container Engine)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建:
简单易用:自动化创建容器集群,一站式部署/运维容器应用,一键式滚动升级;
高性能:自研高性能容器网络,秒级自动弹性伸缩,支持高性能裸金属容器私有集群;
企业级:集群控制面HA和跨AZ高可用,容器应用优雅伸缩,安全下线,保障业务不掉线;
开放兼容:兼容Kubernetes/Docker社区原生版本,CNCF认证的Kubernetes服务提供商,社区的主要贡献者;
下列从安装、运行管理和监控多维度对比自建Istio和华为云CCE上使用Istio的差别:
自建
华为云CCE
Istio包管理
用户自行下载和管理
用户不感知
运行配置
用户自行配置运行环境和依赖
用户不感知
Istio安装
用户自行探索和安装
用户不需要关注具体细节,创建集群时按需启用。
Sidecar注入
用户自行探索和开发、配置
用户不感知
Istio升级
用户自行探索、开发不影响业务的升级方案
提供完整解决方案,按需进行控制面和数据面的升级操作
应用调用链
用户自行探索、开发和安装、配置
对接华为云APM/AOM服务,提供请求调用链跟踪查看能力
应用拓扑
用户自行探索、开发和安装、配置
对接华为云APM/AOM服务,提供查看应用拓扑能力
性能监控
用户自行探索、开发和安装、配置
对接华为云APM/AOM服务,提供请求响应时延的实时性能状态监控
云原生应用在CCE上的部署、管理实践 云原生应用、云平台与微服务架构