tencent cloud

文档反馈

使用对象存储 COS

最后更新时间:2023-04-07 15:13:43

    操作场景

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

    准备工作

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

    说明
    若您的集群已安装 COS-CSI 扩展组件,则请跳过此步骤。
    1. 登录 容器服务控制台,选择左侧导航栏中的集群
    2. 集群管理页面,单击目标集群 ID,进入集群详情页。
    3. 选择左侧导航中的组件管理,在组件管理页面中单击新建。
    4. 新建组件页面,勾选 COS(腾讯云对象存储)组件。
    5. 单击完成

    2. 创建访问密钥

    注意
    为避免主账号密钥泄露造成您的云上资产损失,建议您参照 安全设置策略 停止使用主账号登录控制台或者使用主账号密钥访问云 API,并使用已授予相关管理权限的子账号/协作者进行相关资源操作。
    本文以已授予访问管理相关权限的子用户创建或查看访问密钥为例,关于如何创建子用户并实现访问管理权限请参考文档 自定义创建子用户
    1. 使用子账号用户登录 访问管理控制台,选择左侧导航中的访问密钥 > API 密钥管理。
    2. API 密钥管理页面,单击新建密钥等待新建完成即可。
    说明
    一个子用户最多可以创建两个 API 密钥。
    API 密钥是构建腾讯云 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)所需的访问密钥,需包含变量名 SecretIdSecretKey 及其分别所对应的变量值。请参考 创建访问密钥 完成创建,并前往 API 密钥管理 页面获取访问密钥。
    5. 单击创建 Secret 即可。

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

    注意
    本步骤需使用存储桶,若当前地域无可用存储桶,则请参考 创建存储桶 进行创建。
    1. 在目标集群详情页面,选择左侧菜单栏中的存储 > PersistentVolume,在 PersistentVolume 页面单击新建
    2. 新建 PersistentVolume 页面,参考以下信息创建 PV。如下图所示:
    
    主要参数信息如下:
    来源设置:选择静态创建
    名称:自定义,本文以 cos-pv 为例。
    Provisioner:选择为对象存储 COS
    读写权限:对象存储仅支持多机读写。
    说明
    单机读写:当前仅支持云硬盘同时挂载到一台机器上,因此只能处理单机器的数据读写。
    多机读写:文件存储/对象存储支持同时挂载到多台机器,可以处理多机器的数据读写。
    Secret:选择已在 步骤1 创建的 Secret,本文以 cos-secret 为例(请确保 Secret 创建在 kube-system 命名空间下)。
    存储桶列表:用于保存对象存储中的对象,按需选择可用存储桶即可。
    存储桶子目录:填写已在 获取存储桶子目录 中获取的存储桶子目录,本文以 /costest 为例。若填写的子目录不存在,则系统将为您自动创建。
    域名:展示为默认域名,您可以使用该域名对存储桶进行访问。
    挂载选项:COSFS 工具支持将存储桶挂载到本地,挂载后可直接操作对象存储中的对象,此项用于设置相关限制条件。本例中挂载选项 -oensure_diskfree=20480 表示当缓存文件所在磁盘剩余空间不足 20480MB 时,COSFS 将启动失败。
    说明
    不同的挂载项请以空格进行间隔,更多挂载选项请参见 常用挂载选项文档
    3. 单击创建 PersistentVolume 即可。

    步骤3:创建 PVC 绑定 PV

    注意
    请勿绑定状态为 Bound 的 PV。
    1. 在目标集群详情页,选择左侧菜单栏中的存储 > PersistentVolumeClaim,在 PersistentVolumeClaim 页面单击新建
    2. 新建 PersistentVolumeClaim 页面,参考以下信息创建 PVC。如下图所示:
    
    
    名称:自定义,本文以 cos-pvc 为例。
    命名空间:选择为 kube-system
    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 为例。
    挂载子路径:仅挂载选中数据卷中的子路径或单一文件。例如,./datadata
    3. 单击创建 Deployment 即可。

    通过 YAML 文件使用对象存储

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

    可通过 YAML 创建可以访问对象存储的 Secret,模板如下:
    apiVersion: v1
    kind: Secret
    type: Opaque
    metadata:
    name: cos-secret
    # Replaced by your secret namespace.
    namespace: kube-system
    data:
    # 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: v1
    kind: PersistentVolume
    metadata:
    name: cos-pv
    spec:
    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: XXX
    persistentVolumeReclaimPolicy: Retain
    volumeMode: Filesystem

    创建 PVC 绑定 PV

    可通过 YAML 创建绑定上述 PV 的 PVC,模板如下:
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: cos-pvc
    spec:
    accessModes:
    - ReadWriteMany
    resources:
    requests:
    storage: 1Gi
    # You can specify the pv name manually or just let kubernetes to bind the pv and pvc.
    # volumeName: cos-pv
    # Currently cos only supports static provisioning, the StorageClass name should be empty.
    storageClassName: ""

    创建 Pod 使用 PVC

    可通过 YAML 创建 Pod,模板如下:
    apiVersion: v1
    kind: Pod
    metadata:
    name: pod-cos
    spec:
    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
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持