Skip to main content

moregeek program

如何在 kubernetes 中使用 yrcloudfile 的 dataload 功能?_mb60939e30d6d2e的博客-多极客编程

Kubernetes 是用于自动部署、扩展和管理容器化应用程序的一个开源的容器编排解决方案。尽管 Kubernetes 最初是为无状态应用程序设计的,但随着有状态工作负载的日益流行,Kubernetes 也可用于管理有状态应用程序。

今天我们想要分享的是如何在 Kubernetes 中使用 YRCloudFile 的 DataLoad 功能。当前业内擅长非结构化数据的存储方式主要是文件存储和对象存储,对象存储的优势在于无限扩容和成本低廉,但在数据访问性能上的确较差。基于这一痛点,高性能分布式文件存储 YRCloudFile 结合用户需求开发了 DataLoad 功能,让用户既能体验文件存储的性能,又能享受对象存储的成本和容量优势;另一方面,容器改变了软件开发、交付和 IT 运营的方式。而 Kubernetes 作为一种可自动实施 Linux 容器操作的开源平台,在其之上能运行所有重要的业务应用,所以逐渐成为了容器编排的业界标准。

通过部署 Fluid + YRCloudFile Runtime,Kubernetes 容器能方便的通过 YRCloudFile 来高效使用对象存储。

Fluid 简介

Fluid 是一款开源的云原生基础架构。在计算和存储分离的大背景驱动下,Fluid 的目标是为 AI 与大数据云原生应用提供一层高效便捷的数据抽象,将数据从存储抽象出来,以便实现:

  1. 通过数据亲和性调度和分布式缓存引擎加速,实现数据和计算之间的融合,从而加速计算对数据的访问。
  2. 将数据独立于存储进行管理,并且通过 Kubernetes 的命名空间进行资源隔离,实现数据的安全隔离。
  3. 将来自不同存储的数据联合起来进行运算,从而有机会打破不同存储的差异性带来的数据孤岛效应。

通过 Kubernetes 服务提供的该数据层抽象,就可以让数据像流体一样在诸如 HDFS、OSS、Ceph 这样的存储源和 Kubernetes 上层的云原生应用计算之间灵活高效地移动、复制、驱逐、转换和管理。而具体的数据操作对用户透明,用户不必再担心访问远端数据的效率,或是管理数据源的便捷性,以及如何帮助 Kubernetes 做出恰当的调度决策等运维问题。用户只需以 Kubernetes 原生数据卷的方式直接访问抽象出来的数据,剩余任务交给 Fluid 完成。

如何在 Kubernetes 中使用 YRCloudFile 的 DataLoad 功能?_高性能

重要概念:

Dataset:数据集是逻辑上相关的一组数据的集合,会被运算引擎使用,比如大数据的 Spark,AI 场景的 TensorFlow。这些数据智能的应用会创造工业界的核心价值。

Runtime:实现数据集安全性,版本管理和数据加速等能力的执行引擎。Fluid 的 Runtime 定义了标准化的接口,通过实现这些接口,开发者能够针对不同的场景与需求,扩展不同的 Runtime。

Fluid + YRCloudFile Runtime,加速数据高效访问

云原生容器应用的数据访问面临众多的挑战,YRCloudFile 为解决这些问题,重构新一代面向容器环境的存储解决方案,开发了标准 CSI 插件无缝对接 Kubernetes。用户只需在 Kubernetes 集群 Master 节点及计算节点上,以容器形式运行 YRCloudFile 提供的 CSI 插件,即可对 YRCloudFile 的存储能力进行调度和访问。此外,YRCloudFile 充分调研客户对于对象存储的使用需求设计了 DataLoad 功能,让用户既能体验文件存储的性能,又享受对象存储的成本和容量优势。对于容器用户来说,只通过 YRCloudFile-CSI 也能够使用 YRCloudFile 的 DataLoad 功能,但是操作上较为冗余,生命周期管理上不够完善。

Fluid 通过在 Kubernetes 中部署 Dataset 和 Runtime 两个自定义资源对象,为数据密集型应用(例如大数据应用、AI 应用等)提供了数据加速的服务,并具备很强的数据集安全性和版本管理能力。用户在 Dataset 中指定远存储的信息,Runtime 将远程数据加载到离计算节点更近的地方,从而达到数据访问加速的效果。

将 Fluid 的管理能力和 YRCloudFile 的高效访问能力结合。YRCloudFile 基于自身特性开发了符合 Runtime 接口的 YRCloudFile Runtime,使用 Fluid 的接口来实现 YRCloudFile 的 DataLoad 功能,让容器用户以 YRCloudFile 为存储卷,只使用 Kubernetes 的 API 接口就可以高效的使用对象存储 。

Fluid + YRCloudFile Runtime 当前具备的 DataLoad 功能如下:

  1. 支持元数据导入和数据预热
  2. 支持指定前缀的导入
  3. 支持数据使用结束后的增量导出

后期我们也会将 YRCloudFile 的 DataLoad 功能持续集成到 YRCloudFile Runtime 中。

整体架构图如下图所示,YRCloudFile Runtime 会启动一个 Master 组件。Master 组件主要用来调用 YRCloudFile 的 gRPC 服务。

如何在 Kubernetes 中使用 YRCloudFile 的 DataLoad 功能?_云计算_02

使用流程:

  1. 用户创建 Dataset 定义 S3 的访问信息和 DataLoad 的配置参数。
  2. 用户创建 Runtime,YRCloudFile Runtime Controller 监听到 YRCloudFile Runtime 资源,会将 YRCloudFile Runtime 与同名的 Dataset 进行绑定。
  3. 根据 Dataset 的配置,自动导入 S3 数据到 YRCloudFile 中。
  4. 通过 YRCloudFile-CSI 插件,将对接了 S3 的 YRCloudFile 以 PVC 形式暴露给容器使用,支持容器以 POSIX 接口访问数据。
  5. 用户使用返回的 PVC 来访问数据。
  6. 数据使用结束,将增量数据从 YRCloudFile 热层导出到对象存储中。

YRCloudFile Runtime 使用演示

下面来看看如何使用 YRCloudFile Runtime 来访问 S3 数据。

环境要求

  • Kubernetes version > 1.14, 支持 CSI
  • Fluid 0.7.0
  • YRCloudFile集群 v6.8.x
  • YRCloudFile-CSI,YRCloudFileRuntime v6.8.x

创建 Dataset

创建 Dataset 的 YAML 文件

apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
name: sample
spec:
mounts:
- mountPoint: s3_ip
name: sample
options:
fs.s3.accessKeyId: s3_access_key
fs.s3.accessKeySecret: s3_access_key_secret
fs.s3.bucketName: s3_bucket_name
loadType: onlyMeta/mate+data
importPrefix: prefix
needExport: true/false

参数解释:

mountPoint,accessKeyId,bucketName 是访问 S3 的必备信息。

loadType:导入模式,只导入元数据或者预加载(导入数据+元数据)。

importPrefix:通过配置 importPrefix 导入指定前缀的文件。

needExport:数据使用结束后是否将增量数据导出到 S3。

创建 YRCloudFile Runtime

创建 YRCloudFile Runtime 的 YAML 文件:

apiVersion: data.fluid.io/v1alpha1
kind: YrFSRuntime
metadata:
name: test1

YRCloudFile Runtime 只有一个 Master 组件,创建 YRCloudFile Runtime 后会启动 Master 的 Pod 。

创建 YRCloudFile Runtime 并查看 Master 组件 Pod 的状态。

$kubectl apply -f yrfsruntime.yaml
yrfsruntime.data.fluid.io/sample created
$kubectl get pods
NAME READY STATUS RESTARTS AGE
sample-master-0 1/1 Running 0 4m23s

Pod 创建成功后,YRCloudFile Runtime controller 就会进入 Pod 调用 gRPC 来执行 S3 数据的导入。

查看导入状态:

$kubectl get yrfsruntime
NAME MASTER PHASE AGE
sample Imported 2m12s

当状态为表示 Imported 已经导入完成,会创建出与 Dataset 同名的 PVC 将 YRCloudFile 暴露给容器使用。

$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
sample Bound pvc-8e344d70-d346-47de-9645-2468c6669877 100Pi RWX yrcloudfile-sc 5m42s

创建容器使用 S3 数据

创建 Pod 的 YAML:

apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: /data
name: vol
volumes:
- name: vol
persistentVolumeClaim:
claimName: sample

通过配置与 YRCloudFile Runtime 同名的 PVC,容器可以立刻像使用文件存储一样使用对象存储中的数据。进入 Pod 执行查看目录下是否已包含对象存储中的数据:

$  kubectl exec -it nginx  bash -- ls /data

通过上述的设计,我们将 YRCloudFile 的 DataLoad 功能融入到 Fluid 中,用户只需简单的创建 Dataset 和 Runtime,就可以让容器高效的使用对象存储,既能享受到文件存储的性能,还可以做到降本增效。未来我们的 DataLoad 功能会不断演进,也会更好融入到 Kubernetes 中,敬请期待哦。

©著作权归作者所有:来自51CTO博客作者YRCloudFile的原创作品,请联系作者获取转载授权,否则将追究法律责任

k8s自定义controller三部曲之二:自动生成代码_github.com/zq2599的博客-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本文是《k8s自定义controller三部曲》的第二篇,上一篇我们在k8s环境注册了API对象Student,此时如果创建Student对象就会在etcd保存该对象信息; 源码下载 接下来详细讲述应用的编码过程,如果您不想自己写代码,也可以在

容器编排工具鉴赏- docker-compose 、kubernetes、openshift、docker swarm_博学谷狂野架构师的博客-多极客编程

任务编排工具 我们发现我们现在管理微服务比较麻烦,现在只是三个微服务,如果更多会更加麻烦,怎么办呢,下面我们就来学习下docker编排工具 什么是任务编排 编排是一个新的词汇,经过阅读才明白编排指的是容器的集群化和调度。另一类含义指的是容器管理,负责管理容器化应用和组件任务。 ​ docker毫无疑问是一个优秀的开源工具。但是,仅靠docker引擎和容器就不能进行复杂的应用程序

citrix remote pc网络唤醒_懵懂少年的博客-多极客编程

前言Remote PC Access 是 Citrix Virtual Apps and Desktops 的一项功能,使组织能够轻松地允许员工以安全的方式远程访问企业资源。Citrix 平台允许用户访问其物理办公室 PC,从而使这种安全访问成为可能。如果用户可以访问其办公室 PC,他们可以访问完成工作所需的所有应用程序、数据和资源。Remote PC Access 无需引入和提供其他工具来满足远

seals部署kubernetes1.14.1_不想冬眠哎的博客-多极客编程

注意事项 1.需要纯净的linux系统、ubunt16.04,centos7 2.新版本sealos离线包自带docker、如没安装docker,会自动安装 3.尽量使用新版本sealos 4.必须同步服务器时间,时间保持一致 5.master节点CPU必须2c以上 6.cni组件选择cilium时要求内核版本不低于5.4 网络参数: pod的IP地址段,也称为cidr #podcidr参数指定

kubernetes证书过期更新_不想冬眠哎的博客-多极客编程

反馈k8s接口调用不了 [root@master ~]# kubectl get node The connection to the server IP:6443 was refused - did you specify 发现k8s命令执行不了,查看kubelet.service状态,发现状态是running [root@master ~]# systemctl start kubelet.s

如何不编写 yaml 管理 kubernetes 应用?_rainbond的博客-多极客编程

Kubernetes 将自身边界内的事物都抽象为资源。其中的主要部分,是以 Deployment、StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为 IT 技术工作者展现出一个以 workload 为中心的模型。Kubernetes 中所有的资源,都通过声明式配置文件来编辑描述,一条条的 Yaml 字段定义,给了 IT

免费搭建亚马逊云环境(2)—— root用户、数据库配置_书山有路的博客-多极客编程

一、切换管理员root账号1、输入命令sudo passwd root  2、提示你输入new password,然后再输入一遍确认3、切换root身份su root4、已经是root用户了可以顺便把vim安装上,输入命令:yum install vim5、使用root身份找到 PasswordAuthentication no,把no改成yes(前面#号也要删掉);​vim /etc/ssh/s

免费搭建亚马逊云环境(1)——注册、创建和连接实例_书山有路的博客-多极客编程

一、注册亚马逊云账号1、登录网站:​​https://www.amazonaws.cn/free/?hd_gl_2109​​2、点击页面的创建账号按钮;3、填写相关用户信息;4、等待审核,正常在一天左右;二、创建EC21、审核完成后就可以开始创建实例,选择免费的Red Hat;2、根据默认的选择免费套餐即可;3、默认即可选择下一步;4、这边可以调整默认的存储空间大小,调整到免费最高的30G;5、这

go 语言实现常见排序算法_宇宙之一粟的漂泊之旅的博客-多极客编程

计数排序package sortfunc countingSort(arr []int, bias int) (retArr []int) { countingArr := make([]int, bias+1, bias+1) retArr = make([]int, len(arr), cap(arr)) for _, v := range arr { coun

免费搭建亚马逊云环境(4)—— aws的网络vpc_书山有路的博客-多极客编程

一、简介VPC(Amazon Virtual Private Cloud​)是将 AWS 资源启动到定义的虚拟网络中,这个虚拟网络与数据中心中运行的传统网络极其相似,提供可扩展的基础设施。VPC在AWS里面是基础但又是较为复杂的功能,本文会从实战的角度来梳理VPC的使用。二、基础概念​首先我们要了解几个基础概念,可用区,子网,网关,路由表,对等连接。1、可用区一个可用区(Available Zon

企业上云的关键安全问题和应对之道_mb62f1cd5a97d30的博客-多极客编程

现在企业都希望可以通过云的能力,来提升自己的业务能力,artner预测:到2025年,将有85%的企业和组织采用云优先原则,云计算已经成为企业和组织IT战略的一部分,企业对于上云已经不陌生。在企业上云过程中,如果不能保证安全和可靠,那往往会带来无尽的隐患。一个错误配置的服务器可能会给你的公司带来财务或声誉损失,这需要几年的时间才能挽回。虽然这个过程充满挑战,我们依然有信心去安全的完成云迁移,首先我

详解云端 kop——streamnative cloud for kafka_wx630f055ce23fc的博客-多极客编程

StreamNative Cloud for Kafka目前 StreamNative Cloud for Kafka 服务是预测试版本,只对少数用户定向开放体验。StreamNative Cloud 简介StreamNative Cloud 提供了全托管(Cloud-Hosted)和半托管(Cloud-Managed)两种云端服务,前者是由 StreamNative 提供的全 SaaS 服务,用