[k8s]pod持久存储的几种方式图解
2017-09-06 16:03
1041 查看
参考: https://kubernetes.io/docs/concepts/storage/volumes/
静态提供:管理员手动创建多个PV,供PVC使用。
动态提供:动态创建PVC特定的PV,并绑定。
方式2: 手动创建pv
删除策略:将删除pv和外部关联的存储资源,需要插件支持。
回收策略:将执行清除操作,之后可以被新的pvc使用,需要插件支持。
Bound – 已经绑定到某个pvc上
Released – 对应的pvc被删除,但是资源还没有被集群回收
Failed – 自动回收失败
ReadOnlyMany – 被多个节点mount为只读ro模式
ReadWriteMany – 被多个节点mount为读写rw模式
参考: http://dockone.io/article/2290
4000
没什么卵用
方式3: 自动创建pv–statefulset
参考: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
逻辑关系图解1
逻辑关系图解2
为了说明一个class对应多个pvc.
参考nfs更能看清晰一些
1.emptyDir
apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: gcr.io/google_containers/test-webserver name: test-container volumeMounts: - mountPath: /cache name: cache-volume volumes: - name: cache-volume emptyDir: {}
2.hostPath
apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: gcr.io/google_containers/test-webserver name: test-container volumeMounts: - mountPath: /test-pd name: test-volume volumes: - name: test-volume hostPath: # directory location on host path: /data
3.pod持久存储
方式1: pod直接挂载nfs-servervolumes: - name: nfs nfs: server: 192.168.1.1 path:"/"
静态提供:管理员手动创建多个PV,供PVC使用。
动态提供:动态创建PVC特定的PV,并绑定。
方式2: 手动创建pv
pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv003 spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce nfs: path: /somepath server: 192.168.1.1
$ kubectl get pv NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv-heketi 300Mi ROX Retain Bound default/nfs-pvc-heketi 7d pvc-02b8a30d-8e28-11e7-a07a-025622f1d9fa 50Gi RWX Retain Bound kube-public/jenkins-pvc heketi-storage 5d
pv可以设置三种回收策略:保留(Retain),回收(Recycle)和删除(Delete)。
保留策略:允许人工处理保留的数据。删除策略:将删除pv和外部关联的存储资源,需要插件支持。
回收策略:将执行清除操作,之后可以被新的pvc使用,需要插件支持。
pv的状态:
Available – 资源尚未被claim使用Bound – 已经绑定到某个pvc上
Released – 对应的pvc被删除,但是资源还没有被集群回收
Failed – 自动回收失败
访问权限
ReadWriteOnce – 被单个节点mount为读写rw模式ReadOnlyMany – 被多个节点mount为只读ro模式
ReadWriteMany – 被多个节点mount为读写rw模式
参考: http://dockone.io/article/2290
4000
没什么卵用
pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: myclaim spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi
mypod.yaml volumes: - name: mypod persistentVolumeClaim: claimName: myclaim
方式3: 自动创建pv–statefulset
参考: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
逻辑关系图解1
逻辑关系图解2
为了说明一个class对应多个pvc.
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE nfs-nginx Bound nfs-xx 300Mi ROX 7d
$ kubectl get pv NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv-heketi 300Mi ROX Retain Bound default/nfs-pvc-heketi 7d pvc-02b8a30d-8e28-11e7-a07a-025622f1d9fa 50Gi RWX Retain Bound kube-public/jenkins-pvc heketi-storage 5d
pvc-05bbb05c-8edf-11e7-a07a-025622f1d9fa 30Gi RWX Retain Bound kube-public/mysql-develop-pvc heketi-storage 5d
pvc-0b3ecd56-8ffb-11e7-a07a-025622f1d9fa 50Gi RWX Retain Bound kube-public/gitlab-pvc heketi-storage 3d
pvc-4e657ad5-9205-11e7-a07a-025622f1d9fa 2Gi RWX Delete Bound kube-public/private-pvc heketi-storage 1d
pvc-73dec4f4-8feb-11e7-a07a-025622f1d9fa 10Gi RWX Retain Bound kube-public/gitlab-postgres-pvc heketi-storage 3d
pvc-d74aff4a-91fc-11e7-a07a-025622f1d9fa 2Gi RWX Delete Bound kube-public/spring-pvc heketi-storage 1d
pvc-db821d79-8fb6-11e7-a07a-025622f1d9fa 3Gi RWX Retain Bound kube-public/gitlab-redis-pvc heketi-storage 3d
参考nfs更能看清晰一些
代码配置逻辑关系图解
实例
相关文章推荐
- ASP调用带参数存储过程的几种方式
- 从CSDN密码泄露谈网站存储密码的几种方式
- 《Cocos2d学习之路》九、数据存储的几种方式和基本使用
- 几种session存储方式比较
- Android上常用的几种本地数据存储方式:2、文件存储数据
- Android中有几种数据存储方式,每种方式有哪些特点?
- 存储图片类型数据有以下几种方式
- ASP调用带参数存储过程的几种方式
- 实验二 总结线性表的几种主要存储方式
- cocos2d-x中几种存储数据的方式
- Windows8应用程序数据访问与存储的几种可选方式
- 安卓数据存储的几种方式
- Android上常用的几种本地数据存储方式:3、SQLite数据库存储数据
- android系列:数据存储的几种方式
- ios数据存储的几种常用方式
- Android数据的几种存储方式---------SharePreferences(轻量的以键值对) 的使用
- ASP调用带参数存储过程的几种方式
- iOS中的几种数据存储方式
- android获取存储目录(路径)的几种方式和注意事项
- android 数据存储之SharePreference 的几种方式