容器服务 使用对象存储 COS

腾讯云容器服务 TKE 支持通过创建 PersistentVolume(PV)和 PersistentVolumeClaim(PVC),并为工作负载挂载数据卷的方式使用腾讯云对象存储 COS。这里说明如何在 TKE 集群中为工作负载挂载对象存储。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、1. 安装对象存储扩展组件

注意:说明:

注意:若你的集群已安装 COS-CSI 扩展组件,则请跳过此步骤。

1. 登录 容器服务控制台,选择左侧导航栏中的集群。

2. 在集群管理页面,单击目标集群 ID,进入集群详情页。

3. 选择左侧导航中的组件管理,在组件管理页面中单击新建。

4. 在新建组件管理页面,勾选 COS(腾讯云对象存储)组件。

5. 单击完成。

二、2. 创建访问密钥

注意:为避免主账号密钥泄露造成你的云上资产损失,建议你参照 安全设置策略 停止使用主账号登录控制台或者使用主账号密钥访问云 API,并使用已授予相关管理权限的子账号/协作者进行相关资源操作。

注意:这篇以已授予访问管理相关权限的子用户创建或查看访问密钥为例,关于如何创建子用户并授予访问管理权限请参考文档 自定义创建子用户。

1. 使用子账号用户登录 访问管理控制台,选择左侧导航中的访问密钥 > API 密钥管理。

2. 在 API 密钥管理页面,单击新建密钥等待新建完成即可。

注意:说明:

三、3. 创建存储桶

登录 对象存储控制台并创建一个存储桶,操作详情请参见 创建存储桶。创建完成后,在存储桶列表中进行查看。

四、4. 获取存储桶子目录

1. 在存储桶列表页,单击已创建的存储桶名称,进入该存储桶的详情页。

2. 选择左侧导航中的文件列表,在文件列表中选择需要挂载的子文件夹,进入该文件夹详情页。例如,在页面右上角获取子目录路径 /costest。如下:

五、步骤1:创建可以访问对象存储的 Secret

1. 登录 容器服务控制台,选择左侧导航栏中的集群。

2. 在集群管理页面,单击目标集群 ID,进入集群详情页。

3. 选择左侧导航中的配置管理 > Secret,在 Secret 页面中单击新建。

4. 在新建 Secret 页面,根据以下信息进行设置。如下:

·名称:自定义,这篇以 cos-secret 为例。

·Secret 类型:选择 Opaque,该类型适用于保存密钥证书和配置文件,Value 将以 Base64 格式编码。

·生效范围:选择指定命名空间,请确保 Secret 创建在 kube-system 命名空间下。

·内容:此处用于设置 Secret 访问存储桶(Bucket)所需的访问密钥,需包含变量名 SecretId 和 SecretKey 及其分别所对应的变量值。请参考 创建访问密钥 完成创建,并前往 API 密钥管理 页面获取访问密钥。

5. 单击创建 Secret 即可。

六、步骤2:创建支持 COS-CSI 静态配置的 PV

注意:本步骤需使用存储桶,若当前地域无可用存储桶,则请参考 创建存储桶 进行创建。

1. 在目标集群详情页面,选择左侧菜单栏中的存储 > PersistentVolume,在 PersistentVolume 页面单击新建。

2. 在新建 PersistentVolume 页面,参考以下信息创建 PV。如下:

3. 主要参数信息如下:

·来源设置:选择静态创建。

·名称:自定义,这篇以 cos-pv 为例。

·Provisioner:选择为对象存储 COS。

·读写权限:对象存储仅支持多机读写。

注意:说明:

·Secret:选择已在 步骤1 创建的 Secret,这篇以 cos-secret 为例(请确保 Secret 创建在 kube-system 命名空间下)。

·存储桶列表:用于保存对象存储中的对象,按需选择可用存储桶即可。

·存储桶子目录:填写已在 获取存储桶子目录 中获取的存储桶子目录,这篇以 /costest 为例。

·域名:展示为默认域名,你可以使用该域名对存储桶进行访问。

·挂载选项:

·COSFS 工具支持将存储桶挂载到本地,挂载后可直接操作对象存储中的对象,此项用于设置相关限制条件。本例中挂载选项 -oensure_diskfree=20480 表示当缓存文件所在磁盘剩余空间不足 20480MB 时,COSFS 将启动失败。

·GooseFS-Lite 工具支持将存储桶挂载到本地,像使用本地文件系统一样直接操作腾讯云对象存储中的对象,相比于 COSFS 工具,GooseFS-Lite 可提供更高的大文件读写速度,不受本地磁盘的性能限制,建议容器内存大于2G时使用。配置包括 core_site、goosefs_lite。

core_site 常用参数如下,更多参数可参见 Hadoop-COS 文档。

属性键 说明 默认值 必填项
fs.cosn.useHttps 配置是否使用 HTTPS 作为与 COS 后端的传输协议。 true 否
fs.cosn.upload.part.size 分块上传的每个 part size 的大小。由于 COS 的分块上传最多只能支持10000块,因此需要预估最大可能使用到的单文件大小。 例如,part size 为8MB时,最大能够支持78GB的单文件上传。 part size 最大可以支持到2GB,即单文件最大可支持19TB。 8388608(8MB) 否
fs.cosn.upload_thread_pool 文件流式上传到 COS 时,并发上传的线程数目。 32 否
fs.cosn.read.ahead.block.size 预读块的大小。 1048576(1MB) 否
fs.cosn.read.ahead.queue.size 预读队列的长度。 6 否
fs.cosn.trsf.fs.ofs.tmp.cache.dir 元数据加速存储桶的临时文件目录。 无 元数据加速桶必填
fs.cosn.trsf.fs.ofs.user.appid 元数据加速存储桶的 AppID。 无 元数据加速桶必填
fs.cosn.trsf.fs.ofs.bucket.region 元数据加速存储桶所在的地域,如 ap-shanghai,ap-beijing。 无 元数据加速桶必填

goosefs_lite 常用参数如下:

属性键 说明 默认值 必填项
goosefs.fuse.list.entries.cache.enabled 是否开启客户端 List 缓存 true 否
goosefs.fuse.list.entries.cache.max.size 客户端 List 最大缓存的条目数,单位:条 100000 否
goosefs.fuse.list.entries.cache.max.expiration.time 客户端 List 缓存的有效时间,单位:ms 15000 否
goosefs.fuse.async.release.wait_time.max.ms open 和 rename 操作的文件正在被写入时,等待写入操作完成的时间,单位:ms 5000 否
goosefs.fuse.umount.timeout 卸载文件系统时,等待未完成操作的时间,单位:ms 120000 否

注意:说明:

注意:不同的挂载项请以空格分隔,更多挂载选项请参见 常用挂载选项文档。

4. 单击创建 PersistentVolume 即可。

七、步骤3:创建 PVC 绑定 PV

注意:请勿绑定状态为 Bound 的 PV。

1. 在目标集群详情页,选择左侧菜单栏中的存储 > PersistentVolumeClaim,在 PersistentVolumeClaim 页面单击新建。

2. 在新建 PersistentVolumeClaim 页面,参考以下信息创建 PVC。如下:

·名称:自定义,这篇以 cos-pvc 为例。

·命名空间:选择为业务对应的命名空间。

·Provisioner:选择对象存储 COS。

·读写权限:对象存储仅支持多机读写。

·PersistentVolume:选择在 步骤2 中已创建的 PV,这篇以 cos-pv 为例。

3. 单击创建 PersistentVolumeClaim 即可。

八、步骤4:创建 Pod 使用的 PVC

注意:说明:

注意:本步骤以创建工作负载 Deployment 为例。

1. 在目标集群详情页,选择左侧菜单栏中的工作负载 > Deployment,在 Deployment 页面单击新建。

2. 在新建 Deployment 页面,参考 创建 Deployment 进行创建,并设置数据卷挂载。如下:

·数据卷(选填):

·数据卷类型:选择使用已有 PVC。

·数据卷名称:自定义,这篇以 cos-vol 为例。

·选择 PVC:选择已在 步骤3 中创建的 PVC,这篇以选择 cos-pvc 为例。

·实例内容器:单击添加挂载点,进行挂载点设置。

·数据卷:选择为该步骤中所添加的数据卷 “cos-vol”。

·目标路径:填写目标路径,这篇以 /cache 为例。

·子路径挂载机制:subpath 静态路径挂载、subpathExpr 环境变量动态生成挂载路径。

·挂载子路径:仅挂载选中数据卷中的子路径或单一文件。例如./data 或 data。

3. 单击创建 Deployment 即可。

九、创建可以访问对象存储的 Secret

可通过 YAML 创建可以访问对象存储的 Secret,模板如下:

apiVersion: v1kind: Secrettype: Opaquemetadata: name: cos-secret # Replaced by your secret namespace. namespace: kube-systemdata: # Replaced by your temporary secret file content. You can generate a temporary secret key with these docs: # Note: The value must be encoded by base64. SecretId: VWVEJxRk5Fb0JGbDA4M…(base64 encode) SecretKey: Qa3p4ZTVCMFlQek…(base64 encode)

十、创建支持 COS-CSI 动态配置的 PV

可通过 YAML 创建 PV 以支持 COS-CSI 动态配置,模板如下:

apiVersion: v1kind: PersistentVolumemetadata: name: cos-pvspec: accessModes: – ReadWriteMany capacity: storage: 10Gi csi: driver: com.tencent.cloud.csi.cosfs nodePublishSecretRef: name: cos-secret namespace: kube-system volumeAttributes: # Replaced by the url of your region. url: http://cos.ap-XXX.myqcloud.com # Replaced by the bucket name you want to use. bucket: XXX-1251707795 # You can specify sub-directory of bucket in cosfs command in here. path: /costest # You can specify any other options used by the cosfs command in here. # additional_args: "-oallow_other"# Specify a unique volumeHandle like bucket name.(this value must different from other pv's volumeHandle) volumeHandle: cos-pv persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem

十一、创建 PVC 绑定 PV

可通过 YAML 创建绑定上述 PV 的 PVC,模板如下:

apiVersion: v1kind: PersistentVolumeClaimmetadata: name: cos-pvcspec: accessModes: – ReadWriteMany resources: requests: storage: 1Gi # You can specify the pv name manually or just let kubernetes to bind the pv and pvc. volumeMode: Filesystem volumeName: cos-pv # Currently cos only supports static provisioning, the StorageClass name should be empty. storageClassName: ""

十二、创建 Pod 使用 PVC

可通过 YAML 创建 Pod,模板如下:

apiVersion: v1kind: Podmetadata: name: pod-cosspec: containers: – name: pod-cos command: ["tail", "-f", "/etc/hosts"] image: "centos:latest" volumeMounts: – mountPath: /data name: cos resources: requests: memory: "128Mi" cpu: "0.1" volumes: – name: cos persistentVolumeClaim: # Replaced by your pvc name. claimName: cos-pvc

十三、相关信息

更多关于如何使用对象存储的信息请参见 README_COSFS.md。

赞 (0)
上一篇 4天前
下一篇 4天前