k8s挂载目录_微服务容器目录挂载

前面讲到过Docker的volume机制,容器进程被创建之后,尽管已经开启了Mount Namespace,但是根目录挂载(chroot /var/lib/docker/aufs/mnt/[可读写层id])之前,容器仍然可以看到整个宿主机的文件系统,此时是可以将宿主机的目录挂载到容器的。

docker run -v /home:/test  

将宿主机目录挂载到容器目录:

Volume volume = VolumeBuilder().withName(“唯一id”).withNewHostPath().withPath(“宿主机目录”).endHostPath().build();  

VolumeMount volumeMount = VolumeMountBuilder().withName(“唯一id”).withMountPath(“容器目录”).build();  

将obs桶子目录挂载到容器目录:

创建pvc

首先需要创建持久卷pv,pv是资源,pvc是对pv的使用请求。

kubelet根据pv的对象描述将远端obs桶mount到当前节点的根文件系统。具体地,节点本地需要安装存储插件,插件封装了s3fs,obsfs文件系统,能够处理kubelete下发的mount指令。

e69b9464ce47e3fa6fa116123b4a617b.png 

obs对象桶静态pv:

1. apiVersion:v1  

2. kind:PersistentVolume  

3. metadata:  

4.     name:obs-bucket-pv  

5.     annotations:  

6.         pv.kubernetes.io/provisioned-by: everest-csi-provisioned  

7.     spec:  

8.         accessModes:  

9.         - ReadWriteMany  

10.         capacity:  

11.             storage: 10G  

12.         csi:  

13.              driver: obs.csi.everest.io  

14.              fsType: s3fs  

15.              volumeAttributes:  

16.                   everest.io/obs-volume-type: STANDARD  #标准桶  

17.                   everest.io/region: cn-north-3   #region id  

18.                   storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioned  

19.               volumeHandle: obs-bucket-name   #桶名  

20.           persistentVolumeReclaimPolicy: retain   #保留pv  

21.           storageClassname: customized-obs-csi  #用于扩展自定义存储类,可以自定义需要增加的mount参数(比如在spec下增加一个新的参数),也可关联集群自带的  

绑定obs对象桶创建pvc:

1. apiVersion:v1  

2. kind:PersistentVolumeClaim  

3. metadata:  

4.     name:obs-bucket-pvc  

5.     namespace: default  

6.     annotations:  

7.         volume.beta.kubernetes.io/storage-provisioned: everest-csi-provisioned  

8.         csi.storage.k8s.io/fsType: s3fs  

9.         everest.io/obs-volume-type: STANDARD  

10.     spec:  

11.         accessModes:  

12.         - ReadWriteMany  

13.         resources:  

14.             request:  

15.                 storage: 10G  

16.         volumeName: obs-bucket-pv  #对应pv名称  

17.         storageClassname: customized-obs-csi #保持和pv一致  

挂载子目录到容器目录

Volume volume = VolumeBuilder().withName(“唯一id”).withNewPersistentVolumeClaim().withClaimName(“pvc名称”).endPersistentVolumeClaim().build();  

VolumeMount volumeMount = VolumeMountBuilder().withName(“唯一id”).withSubPath(“子目录”)withMountPath(“容器目录”).build();


版权声明:本文为weixin_35152751原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。