Istio生态系统On ASM(3):在阿里云服务网格ASM中集成云原生推理服务框架KServe

简介: 背景KServe(原KFServing)是云原生环境的的一个模型服务器和推理引擎,可以支持自动缩放、零缩放、金丝雀部署等能力。本文将介绍如何结合阿里云服务网格ASM和阿里云容器服务平台Kubernetes(ACK)来部署。前提条件创建Kubernetes集群。创建阿里云服务网格ASM企业版实例,版本需要>=v1.12.4.58-g3e422e2a-aliyun

KServe(原KFServing)是云原生环境的的一个模型服务器和推理引擎,可以支持自动缩放、零缩放、金丝雀部署等能力。本文将介绍如何结合阿里云服务网格ASM和阿里云容器服务平台Kubernetes(ACK)来部署。

前提条件

  • 创建Kubernetes集群。
  • 创建阿里云服务网格ASM企业版实例,版本需要>=v1.12.4.58-g3e422e2a-aliyun
  • 本文以KServe v0.8版本为例进行安装。

添加数据面集群

在集群与工作负载管理->Kubernetes集群中,将数据面集群到阿里云服务网格ASM管理。


启用数据面KubeAPI访问

在基本信息页,选择启用数据面KubeAPI访问


安装KServe组件

如果已经在数据面集群安装过KServe,可以跳过此步骤。

1. 安装Knative Serving

这里以 Knative Serving v0.7为例,需求Kubernetes版本>=v1.17。。

  1. 通过运行以下命令安装Knative Serving所需的自定义资源:

kubectl apply -f https://raw.githubusercontent.com/AliyunContainerService/asm-labs/kserve/kserve-0.7/serving-crds.yaml

  1. 安装Knative Serving的核心组件:

kubectl apply -f https://raw.githubusercontent.com/AliyunContainerService/asm-labs/kserve/kserve-0.7/serving-core.yaml

  1. 安装Knative Istio controller

在KServe中,可以使用Istio用作调用入口,并提供模型的蓝/绿和金丝雀部署能力。

执行以下命令,将安装net-istio-controller用于Istio的Knative入口控制器,以及istio Gateway和PeerAuthentication资源。PeerAuthentication是用于在服务网格环境中为knative webhook设置PERMISSIVE来避免mTLS认证问题。由于已经启用了数据面KubeAPI访问能力,可以直接使用数据面的kubeconfig进行创建。

kubectl apply -f https://raw.githubusercontent.com/AliyunContainerService/asm-labs/kserve/kserve-0.7/net-istio.yaml

2. 安装Cert Manager

KServe依赖Cert Manager组件。此组件的最低版本要求为v1.3.0。

以v1.3.0版本为例,使用如下命令安装:

kubectl apply -f https://raw.githubusercontent.com/AliyunContainerService/asm-labs/kserve/kserve-0.7/cert-manager.yamlhttps://github.com/cert-manager/cert-manager/releases/download/v1.3.0/cert-manager.yaml


3. 安装KServe

kubectl apply -f https://raw.githubusercontent.com/AliyunContainerService/asm-labs/kserve/kserve-0.7/kserve.yaml

创建ASM网关

在ASM网关点击创建。

注意,协议需要选择TCP,我们设置端口为80。


创建第一个推理服务

使用scikit-learn的训练模型进行测试。

创建命名空间

首先,创建用于部署KServe资源的命名空间。

kubectl create namespace kserve-test


创建 InferenceService


kubectl apply -n kserve-test -f - <

apiVersion: "serving.kserve.io/v1beta1"

kind: "InferenceService"

metadata:

 name: "sklearn-iris"

spec:

 predictor:

   model:

     modelFormat:

       name: sklearn

     storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"

EOF

检查创建状态。

使用数据面Kubeconfig,执行如下命令查询inferenceservices的sklearn-iris的安装状态。

kubectl get inferenceservices sklearn-iris -n kserve-test

安装完成后,会自动创建对应模型配置的虚拟服务和网关规则。

测试通过ASM网关进行访问

创建模型输入文件

cat < "./iris-input.json"

{

 "instances": [

   [6.8,  2.8,  4.8,  1.4],

   [6.0,  3.4,  4.5,  1.6]

 ]

}

EOF


通过ASM网关进行访问

获取SERVICE_HOSTNAME:

SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kserve-test -o jsonpath='{.status.url}' | cut -d "/" -f 3)

测试HOST为sklearn-iris.kserve-test.example.com

使用前文创建的ASM网关地址

curl  -H "Host: ${SERVICE_HOSTNAME}" http://{ASM网关地址}:80/v1/models/sklearn-iris:predict -d @./iris-input.json


总结

作为业内首个全托管Istio兼容的阿里云服务网格产品ASM,一开始从架构上就保持了与社区、业界趋势的一致性,控制平面的组件托管在阿里云侧,与数据面侧的用户集群独立。ASM产品是基于社区Istio定制实现的,在托管的控制面侧提供了用于支撑精细化的流量管理和安全管理的组件能力。通过托管模式,解耦了Istio组件与所管理的K8s集群的生命周期管理,使得架构更加灵活,提升了系统的可伸缩性。从2022年4月1日起,阿里云服务网格ASM正式推出商业化版本, 提供了更丰富的能力、更大的规模支持及更完善的技术保障,更好地满足客户的不同需求场景, 详情可见产品介绍:https://www.aliyun.com/product/servicemesh


目录
相关文章
|
7月前
|
负载均衡 Kubernetes Cloud Native
OpenKruise 是一个基于 Istio 的云原生服务网格
OpenKruise 是一个基于 Istio 的云原生服务网格
77 10
|
运维 负载均衡 监控
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
587 0
|
Kubernetes Cloud Native Docker
云原生Istio安装和使用2
云原生Istio安装和使用2
134 0
|
1月前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
45 2
|
6月前
|
安全 测试技术 开发者
探索服务网格技术:Istio的奥秘与力量
【6月更文挑战第1天】本文介绍了服务网格技术的代表Istio,它是处理服务间通信的基础设施层,由Google、IBM和Lyft联合开发。Istio提供流量管理、安全和可观察性等功能,支持灰度发布、蓝绿部署等,并确保通信安全。适用于微服务治理、多云环境和复杂网络拓扑,尤其适合安全敏感应用。理解Istio有助于解决微服务架构中的挑战。
|
2月前
|
Kubernetes 负载均衡 安全
Istio在微服务中释放服务网格的力量
Istio在微服务中释放服务网格的力量
58 4
|
4月前
|
负载均衡 监控 安全
Istio:微服务治理的超级英雄,一键解锁你的服务网格超能力,让管理复杂变简单!
【8月更文挑战第31天】随着云原生技术的发展,微服务架构成为主流,但其复杂性与管理难题也随之增加。Istio作为开源服务网格平台,通过独特的数据平面和控制平面设计,实现了微服务通信的透明管理,简化了治理复杂度。本文将对比Istio与传统微服务管理方法,详细介绍Istio的架构及其工作原理,包括Envoy代理、服务发现、负载均衡、流量管理、安全认证以及监控等功能。Istio不仅简化了微服务治理,还提供了强大的流量控制和安全机制,使开发者能更高效地管理应用。
86 2
|
4月前
|
开发者 项目管理 开发工具
震惊!单人开发者如何成功过渡到团队协作?Xamarin 项目管理经验大揭秘,让你的开发之路一帆风顺!
【8月更文挑战第31天】Xamarin 是移动应用开发领域的热门跨平台工具,适用于个人开发者及团队。个人开发时需明确需求、运用版本控制(如 Git)并合理规划项目结构以增强代码可维护性。团队协作时,则需建立有效沟通渠道、统一代码规范、严格版本控制及合理分配任务,以提升开发效率与项目质量。
67 1
|
4月前
|
Kubernetes 安全 Cloud Native
解锁安全新纪元:利用服务网格Istio,打造全链路mTLS加密隧道,从入口网关到出口网关,守护数据安全的每一步
【8月更文挑战第2天】随着云原生技术的发展,服务网格(Service Mesh)如Istio已成为微服务架构的核心,通过双向TLS(mTLS)确保通信安全。首先,在Kubernetes部署Istio以管理服务通信。接着,配置入口网关实现所有入向流量的加密处理,防止数据泄露。最后,通过配置Sidecar代理如Envoy,确保服务网格安全访问外部mTLS服务,从而构建起全链路的数据安全防护。
87 11
|
Cloud Native 数据可视化 测试技术
云原生Istio案例实战 3
云原生Istio案例实战
126 0