上篇我们讲到IKS(IBM Cloud Kubernetes Service)集群挂载云存储(文件和块)的测试方法,今天就来看看云对象存储(IBM Cloud Object Storage) ,COS在I/O效能上低于文件和块,但COS的应用场景较为丰富,其数据持久、可靠、安全、灵活分层,接口兼容性等比传统的文件和块要好很多,“最最最”重要的是成本经济,从微服务应用架构和设计考量,k8s和cos两者结合,可成为为Stateful工作负载安全可靠的持久化存储方案。
这里需要先安装云对象存储的IKS插件,它其实就是一个k8s volume插件,使集群下容器Pod能够访问IBM COS存储桶。该插件有两个组件:一个动态预配器和一个 FlexVolume 驱动程序,用于在工作节点上通过 s3fs-fuse挂载存储桶。
需要了解细节可以参考下面开源项目:
cos helm chart (注:这里的cos chart和上篇block略有不同)
danws-MacBook-Pro:k8s-playground danw$ helm repo add ibm-charts https://icr.io/helm/ibm-charts
danws-MacBook-Pro:k8s-playground danw$ helm repo update
danws-MacBook-Pro:k8s-playground danw$ helm pull --untar ibm-charts/ibm-object-storage-plugin
danws-MacBook-Pro:k8s-playground danw$ helm plugin install ./ibm-object-storage-plugin/helm-ibmc
danws-MacBook-Pro:k8s-playground danw$ helm ibmc --help
Helm version: v3.2.4+g0ad800e
Install or upgrade Helm charts in IBM K8S Service(IKS) and IBM Cloud Private(ICP)
...
danws-MacBook-Pro:k8s-playground danw$ helm ibmc install ibm-object-storage-plugin ./ibm-object-storage-plugin
danws-MacBook-Pro:k8s-playground danw$ kubectl get storageclass | grep s3
ibmc-s3fs-cold-cross-region ibm.io/ibmc-s3fs Delete Immediate false 3m28s
ibmc-s3fs-cold-regional ibm.io/ibmc-s3fs Delete Immediate false 3m28s
ibmc-s3fs-flex-cross-region ibm.io/ibmc-s3fs Delete Immediate false 3m28s
ibmc-s3fs-flex-perf-cross-region ibm.io/ibmc-s3fs Delete Immediate false 3m27s
ibmc-s3fs-flex-perf-regional ibm.io/ibmc-s3fs Delete Immediate false 3m28s
ibmc-s3fs-flex-regional ibm.io/ibmc-s3fs Delete Immediate false 3m28s
ibmc-s3fs-standard-cross-region ibm.io/ibmc-s3fs Delete Immediate false 3m27s
ibmc-s3fs-standard-perf-cross-region ibm.io/ibmc-s3fs Delete Immediate false 3m27s
ibmc-s3fs-standard-perf-regional ibm.io/ibmc-s3fs Delete Immediate false 3m27s
ibmc-s3fs-standard-regional ibm.io/ibmc-s3fs Delete Immediate false 3m28s
ibmc-s3fs-vault-cross-region ibm.io/ibmc-s3fs Delete Immediate false 3m28s
ibmc-s3fs-vault-regional ibm.io/ibmc-s3fs Delete Immediate false 3m28s
danws-MacBook-Pro:k8s-playground danw$ kubectl get pod --all-namespaces -o wide | grep object
kube-system ibmcloud-object-storage-driver-4nzrf 1/1 Running 0 2m2s 10.193.33.33 10.193.33.33 <none> <none>
kube-system ibmcloud-object-storage-driver-78478 1/1 Running 0 2m2s 10.193.33.31 10.193.33.31 <none> <none>
kube-system ibmcloud-object-storage-driver-zpxg8 1/1 Running 0 2m2s 10.193.33.44 10.193.33.44 <none> <none>
kube-system ibmcloud-object-storage-plugin-7db84f9cb5-ps7lf 1/1 Running 0 2m2s 172.30.251.76 10.193.33.44 <none> <none>
挂载存储桶需要有COS服务,基本逻辑就是k8s集群连接cos内网服务端点,基于S3协议通过证书访问Bucket,可以参考在线文档:
https://cloud.ibm.com/docs/containers?topic=containers-object_storage
以tok-bucket为例(标准分层)