【Oracle云】OKE PVC 集成 OCI 文件系统(File System)服务

在Oracle Cloud Infrastructure (OCI)中,Oracle Kubernetes Engine (OKE)作为容器托管服务,为用户提供了高度灵活和可扩展的 Kubernetes 环境。本文将主要介绍如何通过 OKE 实现与 OCI 文件系统服务(File System)的集成,涉及 Persistent Volume Claims (PVC) 的配置和管理。通过这种集成,用户可以在 Kubernetes 中轻松地使用 OCI 文件系统,实现更便捷的存储解决方案。

1 流程与架构

1.1 调用文件系统存储流与基础架构图:

  • 定义和创建新的 StorageClass,provisioner 为 fss.csi.oraclecloud.com;
  • 为 StorageClass 指定基础参数,包括核心参数 MountTargets,availabilityDomain等参数;
  • 创建 PVC 时引用新创建的 StorageClass 会自动创建新的文件系统;

1.2 MountTargets 与 FileSystems 

Mount Targets:

与NFS系统服务相似,每一个 Mount Targets 都具有一个私有IP地址,用户可以通过 Mount Target 使用 NFS 协议将其连接到文件系统。

FileSystems:

定义: 文件系统是用户用于存储和检索文件的逻辑存储空间。是容器挂载时使用的目录。

注意:集群运行在Kubernetes1.22或更高版本时,可以在由CSI卷插件动态创建配置PVC。

2 配置Policy安全策略

2.1 当文件存储与OKE数据节点处于同一子网(Policy)

ALLOW any-user to manage file-family in compartment <compartment-name> where request.principal.type = 'cluster'
ALLOW any-user to use virtual-network-family in compartment <compartment-name> where request.principal.type = 'cluster'

2.2 当文件存储与OKE数据节点处于不同的子网(Policy)

ALLOW any-user to manage file-family in TENANCY where request.principal.type = 'cluster'
ALLOW any-user to use virtual-network-family in TENANCY where request.principal.type = 'cluster'

3 创建存储类型

3.1 主要参数说明:

name: <storage-class-name>  # 必填,定义您的存储类型名称


availabilityDomain: <ad-name> # 必填,定义您创建的文件系统所在可用区


mountTargetOcid: <mt-ocid> | mountTargetSubnetOcid: <mt-subnet-ocid> # 必填, 二选一参数,mountTargetOcid:指定已创建的文件系统挂载目标OCID | 或者通过mountTargetSubnetOcid参数指定要创建的文件系统所在子网的OCID


compartmentOcid: <compartment-ocid>  # 选填,指定文件系统所在区间,不填写的话会默认与OKE集群相同区间。


kmsKeyOcid: <key-ocid> # 选填,指定文件系统的加密密钥,如果不指定的话则使用Oracle提供的加密密钥进行静态加密


exportPath: <path>  # 选填,为文件系统挂载目标源端的路径,文件系统路径

# 注意:如果填写则所有的pvc将使用同一个exportPath


exportOptions: [{<options-in-json-format>}] # 选填参数,NFS挂载参数


encryptInTransit: "true"|"false"  # 选填,指定是否加密传输数据

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: <storage-class-name>  # 必填,定义您的存储类型名称
provisioner: fss.csi.oraclecloud.com
parameters:
  availabilityDomain: <ad-name> # 必填,定义您创建的文件系统所在可用区
  mountTargetOcid: <mt-ocid> | mountTargetSubnetOcid: <mt-subnet-ocid> # 必填, 二选一参数,mountTargetOcid:指定已创建的文件系统挂载目标OCID | 或者通过mountTargetSubnetOcid参数指定要创建的文件系统所在子网的OCID
  compartmentOcid: <compartment-ocid>  # 选填,指定文件系统所在区间,不填写的话会默认与OKE集群相同区间。
  kmsKeyOcid: <key-ocid> # 选填,指定文件系统的加密密钥,如果不指定的话则使用Oracle提供的加密密钥进行静态加密
  exportPath: <path>  # 选填,为文件系统挂载目标源端的路径,文件系统路径
  exportOptions: [{<options-in-json-format>}] # 选填参数,NFS挂载参数
  encryptInTransit: "true"|"false"  # 选填,指定是否加密传输数据

3.2 基础示例

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: fss-sc
provisioner: fss.csi.oraclecloud.com
parameters:
  availabilityDomain: AP-TOKYO-1-AD-1
  mountTargetOcid: ocid1.mounttarget.oc1.ap_tokyo_1.aaaaaa4np2t3oo24nzzhillqojxwiotboawxi33lpfxs2mjnmfsc2mia
  compartmentOcid: ocid1.compartment.oc1..aaaaaaaaqpxlw7g5ecxofifi7ubyqtcwldi5op5y7aqmc7tgjn566xuagqaq
  #exportPath: /filesystem

4 创建PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ngx-pvc
spec:
  accessModes:
    - ReadWriteMany # 读写权限在这里其实并不生效
  storageClassName: "fss-sc" # 指定storageClass名称
  resources:
    requests:
      storage: 50Gi

5 创建应用并挂载PVC

apiVersion: v1
kind: Pod
metadata:
  name: fss-centos-1
spec:
  containers:
    - name: centos-1
      image: centos
      ports:
        - name: http
          containerPort: 80
      volumeMounts:
        - name: persistent-storage
          mountPath: /usr/share/nginx/html
      command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ngx-pvc

6 参考资料

OKE PVC集成 OCI 文件系统服务(File System)

https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengcreatingpersistentvolumeclaim_Provisioning_PVCs_on_FSS.htm#contengcreatingpersistentvolumeclaim_topic-Provisioning_PVCs_on_FSS-Using-CSI-Volume-Plugin

export介绍:

https://docs.oracle.com/en-us/iaas/Content/File/Tasks/exportoptions2.htm#Working_with_NFS_Export_Optionsa

🚀 炸鸡物料库 🚀

🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。

🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。

🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。

🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。

💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。

🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值