在KubeCon + CloudNativeCon 2018 中国上,阿里云举办了‘Crafting diverse apps, Alibaba Cloud K8s playground’主题的沙龙,阿里云高级技术专家王夕宁与各位技术人员一同进行了一场Istio的动手实践。
为什么 Istio 不能缺席?
2018年是Service Mesh服务网格的元年,而Istio的第一个生产可用版本1.0也在今年8月初发布。
容器是云原生应用基石,通过应用容器化,不仅使得开发部署更加敏捷、迁移更加灵活,并且将这些实现标准化。而容器编排则是更近一步,负责解决如何高效地编排和利用好这些资源。
如今云原生时代,Kubernetes编排容器服务已经成为一种事实标准;同时微服务与容器在轻量、快速部署、运维等特征的匹配,微服务运行在容器中也正成为一种标准实践。
而Istio在微服务治理上很好地补齐了Kubernetes,同时它又与Kubernetes有着完美的集成,不同于现有的微服务架构如SpringCloud/Netflix OSS等。
在Kubernetes作为基础架构之上,结合Istio服务网格,支持多云、混合云,针对微服务提供有效的治理能力,并以Kubernetes和Istio为基础,提供针对特定应用负载的不同支持,例如针对Kubeflow服务的流量治理、为Knative提供负载的路由管理能力等。
对于云原生应用,采用Kubernetes构建微服务部署和集群管理能力,采用Istio构建服务治理能力,将逐渐成为应用微服务转型的标准配置。
基于 Istio 的服务网格能力
在Istio社区中,已经集成了在阿里云上如何使用Istio的安装手册,帮助您快速上手。同时,在阿里云容器服务控制台中,也提供了一个一键部署、开箱即用的功能,方便大家使用。只需要勾选不同的功能项,就可以决定是否启用日志收集、度量展示等功能。
此外,在Istio官方mixer adapters支持中,我们也提供了云监控的适配器,通过Adapter的简单配置可以很容易地把运行时的指标数据如请求次数等,发送给监控后端 。
利用 Istio 服务网格,可以管理Kubernetes集群上面的Pod之间的流量,阿里云容器服务又提供了很多扩展与集成。
此次重点体现4个方面:
- 在开源社区基础之上,优化集成了阿里云的其他服务。Istio的一个重要能力是实现端到端可观测性,在下一页会重点介绍下全链路分布式跟踪的支持。
- 我们一直帮助用户更容易的去使用Istio,包括命令行支持智能流量路由、金丝雀发布、流量镜像等。
- 我们提供了混合部署能力,除了Kubernetes集群,我们还可以把ECS虚机集成到一个Istio服务网格中。这样可以帮助现有虚拟机上的应用,逐渐地迁移到容器平台上。此外,Istio和Serverless Kubernetes是天作之和,虚拟节点中ECI实现的POD,可以通过Istio和托管服务节点中的Pod实现互联互通和统一管理。
- 基于阿里云的网络能力,我们打通了多集群下的Istio管理。通过Istio将多集群下的Pod实现互联互通和统一管理。
此外,阿里云容器服务Kubernetes提供了一系列Istio的最佳实践, 请参考阿里云产品文档或者云栖社区文章,可以了解如何通过Istio管理应用的灰度发布,或者通过Istio规则如何实现基于TCP/gRPC/HTTP等协议的流量路由的统一管理,以及基于容器和服务网格的异地多活方案。
以 AI 领域为例的 Istio 应用
AI领域中,深度学习模型的持续优化是生产应用重要挑战,它关乎到整体效率及资源利用率。比如电商平台,需要根据用户行为记录持续训练模型,才能更好地对用户偏好和消费热点进行有效地预测。同时一个新模型上线也需要一个安全可控的流程来验证新模型带来的改进。
而基于Istio,阿里云可以轻巧实现流量控制和模型版本的更新及回滚,以及适用于深度学习模型灰度发布能力。
在AI领域之外,目前阿里云已经支持游戏行业、自动化办公、在线教育、互联网广告的等数家客户基于Istio在Kubernetes集群上进行微服务应用的开发。