
(图片来源于网络)Serverless 的数据访问挑战
Aliware
1. 高密访问:
2. 网络延时:
3. IO 吞吐能力的扩容成本高:
Fluid:应用使用数据过程的抽象
Aliware
Fluid 项目地址: https://github.com/fluid-cloudnative/fluid

数据访问能力向上平移的好处是可以利用计算集群中闲置的资源,通过分布式数据缓存能力一方面提供数据分流降低中心存储压力,另一方面利用数据本地性,VPC 网络性能优势和数据访问复用的特性,缩短数据访问路径,提升性能;通过 Dataset 的抽象,在特定语境下,根据应用的需求定义数据访问的范围,特征以及弹性,并且根据这些特性进行特定性能优化。
All problems in computer science can be solved by another level of indirection

数据集的可伸缩性——Fluid 支持 Runtime 弹性伸缩的模式,通过控制缓存 worker 的数量实现弹性伸缩。 数据集合的可操作性——Fluid 支持通过 Dataload CRD 来进行多种模式的预热,包括指定文件列表、文件夹的元数据进行预热。
从下到上优化,Fluid 拥抱阿里云 ECI
Aliware
拥抱已有标准,比如通过 Kubernetes 中 Sidecar,Device Plugin 等标准作为开放接口。保障用户一致性体验。 精细化 Linux 特权控制 关注点分离,让不同的角色关注自己的能力,存储和计算可以并行演进。
价值
Aliware
开放标准
关注点分离
弹性
安全
可观测
快速体验
Aliware
前置条件
拥有一个阿里云容器服务 ACK Pro 集群,并且 K8s 版本号≥1.18 集群中有虚拟节点,如无可参考 ACK Virtual Node 安装,详见: https://help.aliyun.com/document_detail/118970.htm 开通云原生 AI 套件,并安装升级 Fluid 到最新版本,详见: https://help.aliyun.com/document_detail/201997.html
操作步骤
$ helm list -n fluid-systemNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONack-fluid fluid-system 1 2022-08-13 16:05:47.540883158 +0800 CST deployed ack-fluid-0.8.1 0.8.0-50edf67
$ kubectl label namespace default fluid.io/enable-injection=true
$ kubectl get namespace default --show-labelsNAME STATUS AGE LABELSdefault Active 5h28m fluid.io/enable-injection=true
$ cat << EOF > secret.yamlapiVersion: v1kind: Secretmetadata:name: access-keystringData:fs.oss.accessKeyId: <YOUR_ACCESS_KEY_ID>fs.oss.accessKeySecret: <YOUR_ACCESS_KEY_SECRET>EOF
$ kubectl create -f secret.yaml
$ cat << EOF > dataset.yamlapiVersion: data.fluid.io/v1alpha1kind: Datasetmetadata:name: serverless-dataspec:mounts:- mountPoint: oss://large-model-sh/name: demopath: "/"options:fs.oss.endpoint: oss-cn-beijing-internal.aliyuncs.comencryptOptions:- name: fs.oss.accessKeyIdvalueFrom:secretKeyRef:name: access-keykey: fs.oss.accessKeyId- name: fs.oss.accessKeySecretvalueFrom:secretKeyRef:name: access-keykey: fs.oss.accessKeySecret---apiVersion: data.fluid.io/v1alpha1kind: JindoRuntimemetadata:name: serverless-dataspec:replicas: 1tieredstore:levels:- mediumtype: MEMpath: dev/shmquota: 10Gihigh: "0.95"low: "0.7"EOF

$ kubectl create -f dataset.yaml
$ kubectl get dataset serverless-dataNAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGEserverless-data 1.16GiB 0.00B 10.00GiB 0.0% Bound 80s
$ kubectl get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEserverless-data Bound default-serverless-data 100Gi ROX fluid 91s
$ cat << EOF > serving.yamlapiVersion: apps/v1kind: Deploymentmetadata:name: model-servingspec:selector:matchLabels:app: model-servingtemplate:metadata:labels:app: model-servingalibabacloud.com/fluid-sidecar-target: ecialibabacloud.com/eci: "true"annotations:k8s.aliyun.com/eci-use-specs: ecs.s6-c1m2.xlargespec:containers:- image: fluidcloudnative/servingname: servingports:- name: http1containerPort: 8080env:- name: TARGETvalue: "World"volumeMounts:- mountPath: dataname: datavolumes:- name: datapersistentVolumeClaim:claimName: serverless-dataEOF
labels中alibabacloud.com/eci: "true"表示该容器以 ECI 容器方式启动 labels 中 alibabacloud.com/fluid-sidecar-target "eci"告知 Fluid 该 Pod 以 Serverless 方式启动,Fluid 会利用 Webhook 自动向应用 Pod 注入 Fuse 容器,让应用 Pod 可通过 POSIX 接口访问数据集 annotations 中的 k8s.aliyun.com/eci-use-specs 表示使用的 ECI 实例规格
$ kubectl create -f serving.yaml
$ kubectl logs model-serving-546578c447-5x6fm -c servingBegin loading models at 16:35:38real 1m4.999suser 0m0.000ssys 0m1.143sFinish loading models at 16:36:432022-08-13 16:36:43 INFO Hello world sample started.
$ kubectl delete -f serving.yaml
$ cat<<EOF >dataload.yamlapiVersion: data.fluid.io/v1alpha1kind: DataLoadmetadata:name: serverless-data-warmupspec:dataset:name: serverless-datanamespace: defaultEOF
$ kubectl create -f dataload.yamldataload.data.fluid.io/serverless-dataload created$ kubectl get dataloadNAME DATASET PHASE AGE DURATIONserverless-dataload serverless-data Complete 2m43s 34s$ kubectl get datasetNAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGEserverless-data 1.16GiB 1.16GiB 10.00GiB 100.0% Bound 19m
$ kubectl create -f serving.yaml
kubectl logs model-serving-546578c447-pkcpf -c servingBegin loading models at 17:18:54real 0m6.263suser 0m0.000ssys 0m0.998sFinish loading models at 17:19:002022-08-13 17:19:04 INFO Hello world sample started.
展望
Aliware
致谢
Aliware
Fluid 支持 Serverless 的工作感谢来自阿里云,南京大学,Juicedata,哔哩哔哩的小伙伴们共同努力,这是 Serverless 支持数据场景的第一步,我们一起加油来让云的世界更加美好。如果您有兴趣也可以钉钉搜索群号:32850151,加入 Fluid 开源社区技术交流群。如果您 认为 Fluid 有用的话,欢迎与感谢您给 Fluid 项目一个 star。
Fluid 的代码仓库地址为:
https://github.com/fluid-cloudnative/fluid

作者简介:
车漾,阿里云容器服务高级技术专家
刘奖,阿里云操作系统部资深技术专家
景奇,阿里云弹性计算技术专家
如何高效调度 AI 和大数据作业?怎样提高 GPU 等资源效率和弹性?快来尝试 ACK 云原生 AI 套件吧!基于标准 Kubernetes,提供组件化、可扩展、可灵活组合和定制的云原生 AI 能力,全栈优化 AI 性能、效率和成本,助力企业级用户快速定制化构建 AI 平台。戳原文链接领取 2022 年免费体验席位!
文章转载自阿里巴巴中间件,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




