You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Oracle Kubernetes Engine中使用Oracle Object Storage作为持久化卷遇阻求助

问题排查与解决方案

1. 补全StorageClass必填参数

你的storage-class.yaml中compartment-id、access-key、secret-key均为空,这是导致Provisioner无法工作的核心问题,必须填入有效参数:

  • compartment-id: 填写test-bucket所在OCI compartment的OCID(格式如ocid1.compartment.oc1..xxxxxxxxxxxxxx)
  • access-key/secret-key: 生成OCI用户的API密钥对,且该用户需拥有对象存储桶的读写管理权限(比如附加ObjectStorageFullAccess策略,或自定义包含objectstorage:bucket:*、objectstorage:object:*操作的权限)

修正后的StorageClass示例:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: object-storage
provisioner: oci.oraclecloud.com/object-storage
parameters:
  compartment-id: ocid1.compartment.oc1..aaaaaaaaexamplexxxxxx
  bucket-name: test-bucket
  access-key: AKIAXXXXXXXXEXAMPLE
  secret-key: xxxxxxxxxxxxxxxxExampleSecretKey

2. 修正PVC访问模式

OCI对象存储属于对象级存储,不支持ReadWriteOnce访问模式,需根据需求改为ReadOnlyMany或ReadWriteMany:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: object-storage-pvc
spec:
  storageClassName: object-storage
  accessModes:
    - ReadWriteMany  # 或 ReadOnlyMany
  resources:
    requests:
      storage: 5Gi

3. 确认外部Provisioner已部署

oci.oraclecloud.com/object-storage并非OKE集群默认内置的Provisioner,需确认是否已部署对应的外部存储组件:

  • 确保集群节点能正常访问OCI API
  • 推荐使用官方OCI CSI驱动替代旧版Provisioner,以获得更好的兼容性与功能支持

4. 手动创建PV的正确配置

若选择手动创建PV,需确保配置与存储桶信息匹配,示例如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: object-storage-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: oci.oraclecloud.com/object-storage
    volumeHandle: test-bucket  # 目标存储桶名称
    volumeAttributes:
      compartment-id: ocid1.compartment.oc1..aaaaaaaaexamplexxxxxx
      access-key: AKIAXXXXXXXXEXAMPLE
      secret-key: xxxxxxxxxxxxxxxxExampleSecretKey

创建后需保证PVC的storageClassName为空,或与PV的storageClassName一致,才能自动绑定。

5. 验证权限策略

确认API密钥对应的OCI用户在目标compartment中拥有足够权限,示例策略:

Allow user <用户OCID> to manage object-storage-namespaces in compartment < compartment名称>
Allow user <用户OCID> to manage buckets in compartment < compartment名称>
Allow user <用户OCID> to manage objects in compartment < compartment名称>

6. 日志排查问题

若上述操作后仍未解决,查看Provisioner日志定位具体错误:

# 查找Provisioner pod
kubectl get pods -n kube-system | grep oci-object-storage
# 查看日志详情
kubectl logs <Provisioner pod名称> -n kube-system

内容的提问来源于stack exchange,提问作者Zunnurain Badar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:07:50