tencent cloud

对象存储

动态与公告
产品动态
产品公告
产品简介
产品概述
功能概览
应用场景
产品优势
基本概念
地域和访问域名
规格与限制
产品计费
计费概述
计费方式
计费项
免费额度
计费示例
查看和下载账单
欠费说明
常见问题
快速入门
控制台快速入门
COSBrowser 快速入门
用户指南
创建请求
存储桶
对象
数据管理
批量处理
全球加速
监控与告警
运维中心
数据处理
内容审核
智能工具箱
数据工作流
应用集成
工具指南
工具概览
环境安装与配置
COSBrowser 工具
COSCLI 工具
COSCMD 工具
COS Migration 工具
FTP Server 工具
Hadoop 工具
COSDistCp 工具
HDFS TO COS 工具
GooseFS-Lite 工具
在线辅助工具
自助诊断工具
实践教程
概览
访问控制与权限管理
性能优化
使用 AWS S3 SDK 访问 COS
数据容灾备份
域名管理实践
图片处理实践
COS 音视频播放器实践
工作流实践
数据直传
内容审核实践
数据安全
数据校验
大数据实践
COS 成本优化解决方案
在第三方应用中使用 COS
迁移指南
本地数据迁移至 COS
第三方云存储数据迁移至 COS
以 URL 作为源地址的数据迁移至 COS
COS 之间数据迁移
Hadoop 文件系统与 COS 之间的数据迁移
数据湖存储
云原生数据湖
元数据加速
数据加速器 GooseFS
数据处理
数据处理概述
图片处理
媒体处理
内容审核
文件处理
文档处理
故障处理
获取 RequestId 操作指引
通过外网上传文件至 COS 缓慢
访问 COS 时返回403错误码
资源访问异常
POST Object 常见异常
API 文档
简介
公共请求头部
公共响应头部
错误码
请求签名
操作列表
Service 接口
Bucket 接口
Object 接口
批量处理接口
数据处理接口
任务与工作流
内容审核接口
云查毒接口
SDK 文档
SDK 概览
准备工作
Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Flutter SDK
Go SDK
iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
React Native SDK
小程序 SDK
错误码
鸿蒙(Harmony) SDK
终端 SDK 质量优化
安全与合规
数据容灾
数据安全
访问管理
常见问题
热门问题
一般性问题
计费计量问题
域名合规问题
存储桶配置问题
域名和 CDN 问题
文件操作问题
日志监控问题
权限管理问题
数据处理问题
数据安全问题
预签名 URL 问题
SDK 类问题
工具类问题
API 类问题
服务协议
Service Level Agreement
隐私政策
数据处理和安全协议
联系我们
词汇表
文档对象存储

使用腾讯云 EKS 部署

聚焦模式
字号
最后更新时间: 2024-01-11 14:25:11
容器服务(Elastic Kubernetes Service,EKS) 是腾讯云容器服务推出的无须用户购买节点即可部署工作负载的容器服务模式。EKS 完全兼容原生 Kubernetes,支持使用原生方式购买及管理资源,按照容器真实使用的资源量计费。EKS 还扩展支持腾讯云的存储及网络等产品,同时确保用户容器的安全隔离、开箱即用。
使用腾讯云 EKS 部署 GooseFS 可以充分利用 EKS 的弹性计算资源,构建按需按秒付费的对象存储(Cloud Object Storage,COS)存储访问加速服务。

架构说明

下图展示了使用腾讯云 EKS 部署 GooseFS 的通用架构。


如图中所示,整个架构由 EKS 托管组件、用户资源池和 COS 存储三大部分组成。其中用户资源池主要用于部署 GooseFS 集群,COS 存储作为远端存储系统,也支持替换为云 HDFS 这一公有云存储服务。具体构架过程中:
GooseFS Master 和 Worker 都以 Kubernetes Statefulset 类型进行资源部署
使用 Fluid 拉起 GooseFS 集群
Fuse Client 集成在用户 Pod 的沙箱(Sandbox)中
使用方式上保持与在标准 Kubernetes 一致

操作步骤

环境准备

1. 创建 EKS 集群,具体操作请参见 创建集群
2. 开启集群访问,按实际情况选择内网或者外网,具体说明请参见 连接集群
3. 执行 kubectl get ns 指令,确认集群可以使用:
-> goosefs kubectl get ns
NAME STATUS AGE
default Active 7h31m
kube-node-lease Active 7h31m
kube-public Active 7h31m
kube-system Active 7h31m

4. 获取 helm,可参考 Helm 官方文档 进行操作。

安装 GooseFS

1. 输入 helm install 指令安装 chart 包,安装 fluid:
-> goosefs helm install fluid ./charts/fluid-on-tke
NAME: fluid
LAST DEPLOYED: Tue Jul 6 17:41:20 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

2. 查看 fluid 相关的 pod 状态:
-> goosefs kubectl -n fluid-system get pod
NAME READY STATUS RESTARTS AGE
alluxioruntime-controller-78877d9d47-p2pv6 1/1 Running 0 59s
dataset-controller-5f565988cc-wnp7l 1/1 Running 0 59s
goosefsruntime-controller-6c55b57cd6-hr78j 1/1 Running 0 59s

3. 创建 dataset,按实际需要修改相关变量,并执行 kubectl apply -f dataset.yaml 指令应用 dataset
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
name: ${dataset-name}
spec:
mounts:
- mountPoint: cosn://${bucket-name}
name: ${dataset-name}
options:
fs.cosn.userinfo.secretKey: XXXXXXX
fs.cosn.userinfo.secretId: XXXXXXX
fs.cosn.bucket.region: ap-${region}
fs.cosn.impl: org.apache.hadoop.fs.CosFileSystem
fs.AbstractFileSystem.cosn.impl: org.apache.hadoop.fs.CosN
fs.cos.app.id: ${user-app-id}

4. 创建 GooseFS 集群,使用以下 yaml,并执行 kubectl apply -f runtime.yaml
apiVersion: data.fluid.io/v1alpha1
kind: GooseFSRuntime
metadata:
name: slice1
annotations:
master.goosefs.eks.tencent.com/model: c6
worker.goosefs.eks.tencent.com/model: c6
spec:
replicas: 6 # worker 数量,虽然控制器支持扩容,但是goosefs当前不支持数据的自动re-balance
data:
replicas: 1 # goosefs 数据副本数
goosefsVersion:
imagePullPolicy: Always
image: ccr.ccs.tencentyun.com/cosdev/goosefs # goosefs 集群使用的镜像以及版本
imageTag: v1.0.1
tieredstore:
levels:
- mediumtype: MEM # 支持MEM,HDD,SSD 分别对应 内存,高效云盘,SSD云盘
path: /data
quota: 5G # 无论内存还是云盘都会生效,云盘最低为10G
high: "0.95"
low: "0.7"
properties:
goosefs.user.streaming.data.timeout: 5s
goosefs.job.worker.threadpool.size: "22"
goosefs.master.journal.type: UFS # UFS或者EMBEDDED,单master时使用UFS
# goosefs.worker.network.reader.buffer.size: 128MB
goosefs.user.block.size.bytes.default: 128MB
# goosefs.user.streaming.reader.chunk.size.bytes: 32MB
# goosefs.user.local.reader.chunk.size.bytes: 32MB
goosefs.user.metrics.collection.enabled: "false"
goosefs.user.metadata.cache.enabled: "true"
goosefs.user.metadata.cache.expiration.time: "2day"
master:
# 设定POD对应的虚拟机的规格,必填参数,不填写默认 1c1g
resources:
requests:
cpu: 8
memory: "16Gi"
limits:
cpu: 8
memory: "16Gi"
replicas: 1
# journal:
# volumeType: pvc
# storageClass: goosefs-hdd
jvmOptions:
- "-Xmx12G"
- "-XX:+UnlockExperimentalVMOptions"
- "-XX:ActiveProcessorCount=8"
- "-Xms10G"
worker:
jvmOptions:
- "-Xmx28G"
- "-Xms28G"
- "-XX:+UnlockExperimentalVMOptions"
- "-XX:MaxDirectMemorySize=28g"
- "-XX:ActiveProcessorCount=8"
resources:
requests:
cpu: 16
memory: "32Gi"
limits:
cpu: 16
memory: "32Gi"
fuse:
jvmOptions:
- "-Xmx4G"
- "-Xms4G"
- "-XX:+UseG1GC"
- "-XX:MaxDirectMemorySize=4g"
- "-XX:+UnlockExperimentalVMOptions"
- "-XX:ActiveProcessorCount=24"

5. 检查集群状态以及 PVC 状态:
-> goosefs kubectl get pod
NAME READY STATUS RESTARTS AGE
slice1-master-0 2/2 Running 0 8m8s
slice1-worker-0 2/2 Running 0 8m8s
slice1-worker-1 2/2 Running 0 8m8s
slice1-worker-2 2/2 Running 0 8m8s
slice1-worker-3 2/2 Running 0 8m8s
slice1-worker-4 2/2 Running 0 8m8s
slice1-worker-5 2/2 Running 0 8m8s
-> goosefs kubectl get pvc
slice1 Bound default-slice1 100Gi ROX fluid 7m37s # PVC名称与dataset名称一致,100Gi是一个虚拟值用作占位


数据加载

预加载数据只需要使用如下的 yaml 创建一个 resource 即可,yaml 示例如 kubectl apply -f dataload.yaml,执行后对应的响应示例如下:
apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
name: slice1-dataload
spec:
# 配置需要执行数据加载的 dataset信息
dataset:
name: slice1
namespace: default
创建后,可以通过 kubectl get dataload slice1-dataload 观察状态。

业务 Pod 挂载 PVC

用户业务容器按照 k8s 标准用法使用,具体请参见 Kubernetes 官方文档

销毁 GooseFS 集群

销毁 GooseFS 集群可以通过 delete 指令进行删除,可以指定删除 master 和 worker 节点。该操作属高危操作,请确保业务 pod 中没有对 Goosefs 的 IO 操作之后执行。
-> goosefs kubectl get sts
NAME READY AGE
slice1-master 1/1 14m
slice1-worker 6/6 14m
-> goosefs kubectl delete sts slice1-master slice1-worker
statefulset.apps "slice1-master" deleted
statefulset.apps "slice1-worker" deleted


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈