使用对象存储bos -奇异果体育app竞彩官网下载
准备工作
用户做好以下准备,才能在容器中挂载bos实例。
创建bucket
- 创建bos bucket,操作步骤请参考创建bucket
注意: 请注意创建的bos bucket所处地域。如果创建的bos bucket与容器集群分属不同地域,要求挂载点所在bcc/bbc开放公网访问,同地域则可以通过内网读写。
创建容器集群
- 创建一个容器集群,操作步骤参考创建集群。
- 下载命令行客户端kubectl,并连接集群,操作步骤参考。
注意:k8s集群版本>=1.16
操作指南
部署存储插件
- 依次选择:容器引擎 cce -> helm 模版 -> 百度云模版
- 通过模版名称
cce-csi-bos-plugin
搜索模版
- 点击安装并填写相应的参数
* 实例名称:插件实例名称,例:bos;
* 部署集群:选择需要部署 bos csi 插件的集群;
* 命名空间:管理实例的 helm 元数据的命名空间,例:kube-system;
* kubernetets 版本:填写实际部署集群的版本,目前支持:1.20、1.18、1.16;
* nodes:如果部署集群的节点的时候,指定了 kubelet 的数据目录,需要填写具体使用的数据目录到该列表,否则保持默认即可;
* region: 需要修改为集群实际的 region,支持: bj(北京), gz(广州), su(苏州), hkg(香港), bd(保定), fwh(武汉)
静态pv/pvc方式挂载bos
注意:由于csi bosplugin 依赖 bosfs,在pod中配置 livenessprobe
检查挂载点状态可以避免容器无法感知 bosfs 异常重启后的挂载点失效的问题,强烈建议添加该配置,具体配置项参考在pod内挂载pvc中的例子。
1.在集群中创建 ak/sk 的 secret,用以访问bos存储。
kubectl create secret generic csi-bos-secret \
--from-literal=ak= \
--from-literal=sk=
关于 ak/sk 的更多信息参考: 如何获取 ak 和 sk
2.在集群中创建pv和pvc资源
使用kubectl,执行 kubectl create -f bos-pv.yaml
完成pv的创建
对应的bos-pv.yaml文件如下所示:
apiversion: v1
kind: persistentvolume
metadata:
name: pv-bos
namespace: "default"
spec:
accessmodes:
- readwriteonce
- readonlymany
capacity:
storage: 5gi
storageclassname: csi-bos
csi:
driver: "csi-bosplugin"
volumehandle: "v-xxxxxx"
nodepublishsecretref:
name: "csi-bos-secret"
namespace: "default"
mountoptions:
- "-o meta_expires=0"
persistentvolumereclaimpolicy: retain
注意事项及参数说明:
- yaml中volumehandle:对应的是bos的 bucketname, 支持挂载 bos bucket子目录 , 如: bucketname/dirname
- nodepublishsecretref:填写步骤1中的 secret 名
mountoptions: 由于 bos bucket 挂载依赖 bosfs,因此支持通过 mountoptions 指定 bosfs 的启动参数,支持的参数详情见,常用参数和说明如下:
meta_expires
: meta缓存过期时间,单位为秒。不设置该参数代表永不过期。上述pv yaml示例中该参数被设置为0,代表不缓存。缓存过期时间过短可能影响写入性能,过长可能导致挂载点内看不到其他客户端写入同一bucket的数据。同一bucket一写多读场景建议设置为0,纯写入场景建议设置为3600,单点读写场景可以不设置。allow_other
: 是否允许非root用户读取挂载点内数据,默认只有root用户可读写,容器内非root进程如果要读取挂载点内数据需要设置该参数,更细粒度权限的管理可以配合mount_umask
参数一同使用。- bos 支持一写多读,对应的 accessmode 只支持 readwriteonce readonlymany
创建pv后,输入kubectl get pv
可以看见一个available状态的pv,如下所示:
$ kubectl get pv
name capacity access modes reclaim policy status claim storageclass reason age
bos-pv 5gi rwo,rox retain available csi-bos 3s
3.建立一个能够与该pv绑定的pvc
使用kubectl,执行 kubectl create -f bos-pvc.yaml
完成pvc的创建
对应的bos-pvc.yaml
文件如下所示:
apiversion: v1
kind: persistentvolumeclaim
metadata:
name: bos-pvc
spec:
accessmodes:
- readwriteonce
- readonlymany
resources:
requests:
storage: 5gi
storageclassname: csi-bos
注意: yaml中storageclassname字段用于和 pv关联,建议填写,如果集群中使用多类存储系统的 pv
绑定前,pvc为pending状态
$ kubectl get pvc
name status volume capacity access modes storageclass age
bos-pvc pending csi-bos 2s
绑定后,pv和pvc状态变为bound
$ kubectl get pv
name capacity access modes reclaim policy status claim storageclass reason age
bos-pv 5gi rwx retain bound default/bos-pvc 36s
$ kubectl get pvc
name status volume capacity access modes storageclass age
bos-pvc bound bos-pv 5gi rwo,rox csi-bos 1m
有关pv和pvc的更多设置和字段说明,见
4.在pod内挂载pvc
在pod spec内指定相应的pvc名称即可,使用kubectl,执行 kubectl create -f demo-bos-pod.yaml
完成pod的创建
对应的demo-bos-pod.yaml
文件如下所示:
apiversion: v1
kind: pod
metadata:
name: nginx01
namespace: default
spec:
containers:
- image: nginx
imagepullpolicy: always
name: nginx01
volumemounts:
- mountpath: /var/lib/www/html
name: bos-pvc
- mountpath: /var/lib/www/html000
name: bos-pvc
readonly: true
livenessprobe:
exec:
command:
- stat
- /var/lib/www/html
volumes:
- name: bos-pvc
persistentvolumeclaim:
claimname: bos-pvc
readonly: false
pod创建后,可以读写容器内的/var/lib/www/html
路径来访问相应的bos存储上的内容, 同时该路径支持读写,/var/lib/www/html000
支持只读。
注意:由于csi bosplugin 依赖 bosfs,在pod中配置
livenessprobe
可以避免容器无法感知 bosfs 异常重启后的挂载点失效的问题。
同时,支持在其余机器上挂载只读盘,kubectl create -f demo-bos-pod1.yaml
创建一个包含只读 bos bucket的 pod
apiversion: v1
kind: pod
metadata:
name: nginx01-bbaa
spec:
containers:
- image: nginx
imagepullpolicy: always
name: nginx01
terminationmessagepath: /dev/termination-log
terminationmessagepolicy: file
volumemounts:
- mountpath: /var/lib/www/html000
name: bos-pvc
readonly: true
livenessprobe:
exec:
command:
- stat
- /var/lib/www/html000
volumes:
- name: bos-pvc
persistentvolumeclaim:
claimname: bos-pvc
readonly: true
5.释放pv和pvc资源
完成存储资源的使用后,可以释放pvc和pv资源
使用以下命令可以释放pvc
$ kubectl delete -f bos-pvc.yaml
释放pvc后,原来与之绑定的pv状态会变为release,如下所示:
name capacity access modes reclaim policy status claim storageclass reason age
bos-pv 5gi rwo,rox retain released default/bos-pvc csi-bos 16m
输入以下指令释放pv资源
$ kubectl delete -f bos-pv.yaml