Kubernetes 存储卷
OSS
httpshelp.aliyun.comdocument_detail86543.html
使用说明
配置 OSS 静态存储卷的说明如下:
- OSS 为共享存储,可以同时为多个 Pod 提供共享存储服务。
- bucket:目前只支持挂载存储空间 Bucket,不支持挂载 Bucket 下面的子目录或文件。
- url:OSS 的 Endpoint,挂载 OSS 的接入域名,挂载节点和存储空间的地域相同时,可使用内网地址。
- akId:您的 AccessKey ID 值。
- akSecret:您的 AccessKey Secret 值。
- otherOpts:挂载 OSS 时支持定制化参数输入,格式为:
-o -o
。 - 您在使用 OSS 数据卷时,不要使用 subpath 的配置。
- 使用数据卷时,推荐每个应用使用独立的 PV 名字。
注意事项
- OSS 数据卷是使用 OSSFS 文件进行挂载的 FUSE 文件系统,适合于读文件场景。例如:读配置文件、视频、图片文件等场景。
- OSSFS 不擅长于写文件的应用场景。如果您的业务是将文件写入存储的场景,推荐使用 NAS 存储卷服务。
- 内核态文件系统相较于用户态模拟的文件系统,在稳定性、性能上更具有优势,生产环境中推荐您使用 NAS 文件存储,而不推荐 OSS 文件系统
- OSSFS 可以通过调整配置参数的方式,优化其在缓存、权限等方面的表现,请参见常见问题、ossfsREADME-CN.md、FAQ。
直接挂载
创建并复制以下内容到 oss-deploy.yaml 中。执行以下命令,创建 Pod。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35apiVersion extensionsv1beta1
kind Deployment
metadata
name nginx-oss-deploy
spec
replicas 1
template
metadata
labels
app nginx
spec
containers
- name nginx-flexvolume-oss
image nginx
volumeMounts
- name oss1
mountPath data
livenessProbe
exec
command
- sh
- -c
- cd data
initialDelaySeconds 30
periodSeconds 30
volumes
- name oss1
flexVolume
driver alicloudoss
options
bucket docker
url oss-cn-hangzhou.aliyuncs.com
akId
akSecret
otherOpts -o max_stat_cache_size=0 -o allow_other1
kubectl apply -f oss-deploy.yaml
PV & PVC
您可以使用 YAML 文件或者通过容器服务控制台界面创建 PV。创建 PV
使用 oss-pv.yaml 文件创建 PV1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18apiVersion v1
kind PersistentVolume
metadata
name pv-oss
spec
capacity
storage 5Gi
accessModes
- ReadWriteMany
storageClassName oss
flexVolume
driver alicloudoss
options
bucket docker
url oss-cn-hangzhou.aliyuncs.com
akId
akSecret
otherOpts -o max_stat_cache_size=0 -o allow_other创建 PVC
使用 oss-pvc.yaml 文件创建 PVC1
2
3
4
5
6
7
8
9
10
11kind PersistentVolumeClaim
apiVersion v1
metadata
name pvc-oss
spec
storageClassName oss
accessModes
- ReadWriteMany
resources
requests
storage 5Gi创建 Pod
使用 oss-deploy.yaml 创建 Podhttpshelp.aliyun.comdocument_detail130911.html1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36apiVersion appsv1
kind Deployment
metadata
name oss-static
labels
app nginx
spec
replicas 1
selector
matchLabels
app nginx
template
metadata
labels
app nginx
spec
containers
- name nginx
image nginx
ports
- containerPort 80
volumeMounts
- name pvc-oss
mountPath data
livenessProbe
exec
command
- sh
- -c
- cd data
initialDelaySeconds 30
periodSeconds 30
volumes
- name pvc-oss
persistentVolumeClaim
claimName pvc-ossNAS
创建动态卷
配置 StorageClass
配置示例如下1
2
3
4
5
6
7
8
9
10
11
12apiVersion storage.k8s.iov1
kind StorageClass
metadata
name alicloud-nas
mountOptions
- nolock,tcp,noresvport
- vers=3
parameters
server 23a9649583-iaq37.cn-shenzhen.nas.aliyuncs.comnasroot1
driver flexvolume
provisioner alicloudnas
reclaimPolicy Delete说明
- mountOptions:表示生成的 PV options 配置,挂载 NAS 卷时使用这个 options 挂载。
- server:表示生成目标 PV 所使用 NAS 挂载点列表。格式为 nfsurl1path1,nfsurl2path2;当配置多个 server 时,通过此 StorageClass 创建的 PV 会轮询使用上述 server 作为配置参数;极速 NAS 配置路径需要以 share 开头。
- driver:支持 Flexvolume、NFS 两种驱动,默认为 NFS。
- reclaimPolicy:PV 的回收策略,建议配置为 Retain。
- 当配置为 Delete 时,删除 PV 后 NAS 文件系统中的对应目录会默认修改名字(例如,path-name 会被修改为 archived-path-name)。
- 如果需要删除文件系统中对应的存储目录,可在 StorageClass 中配置
archiveOnDelete
为 false。使用动态卷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42apiVersion v1
kind Service
metadata
name nginx
labels
app nginx
spec
ports
- port 80
name web
clusterIP None
selector
app nginx
apiVersion appsv1
kind StatefulSet
metadata
name web
spec
serviceName nginx
replicas 5
volumeClaimTemplates
- metadata
name html
spec
accessModes
- ReadWriteOnce
storageClassName alicloud-nas
resources
requests
storage 2Gi
template
metadata
labels
app nginx
spec
containers
- name nginx
image nginxalpine
volumeMounts
- mountPath data
name html
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 君玉自牧!