kubernetes学习----存储卷

存储卷

docker可以使容器上的目录与节点上的目录做关联,达到持久性

  • k8s集群的存储卷
    kubectl explain pods.spec.volumes 查看k8s支持的存储卷
  • emptyDir
    ## pod-vol-demo.yaml
      apiVersion: v1
      kind: Pod
      metadata:
          name: pod-demo
          namespace: default
          labels:
              app:myapp
      spec:
          containers:
          - name: httpd
            image: busybox:latest
            imagePullPolicy: IfNotPresent
            command: ["/bin/httpd","-f","-h /data/web/html"]
            ports:
            -  name: http
               containerPort: 80
            volumeMounts:   ###存储卷挂载点说明
            - name: html   ##挂载存储卷名称
               mountPath: /data/web/html/   ##挂载路径
          - name: busybox
            image: busybox:latest
            imagePullPolicy: IfNotPresent
            volumeMounts:
            - name: html
              mountPath: /data/
            command:
            -  "/bin/sh"
            -  "-c"
            -  "while tre;do echo ${date} >> /data/index.html; sleep 2;done"
           volumes:
           - name: html
              emptyDir: {}   ## 存储卷类型的属性 ,映射键值使用磁盘空间,生命周期同pod,pod删除数据也删除了。         
              
    
    • hostPath在这里插入图片描述
#pod-hostpath-vol.yaml
apiVersion: v1
kind: Pod
metadata:
    name: pod-vol-hostpath
    namespace: default
spec:
    containers:
    - name: myapp
      image: myapp:v1
      volumeMounts:
      - name: html
        mountPath: /usr/share/nginx/html
    volumes:
    - name: html
      hostPath:
        path: /data/pod/volumes1
        type: DirectoryOrCreate   ###不存在就创建
  • nfs
apiVersion: v1
kind: Pod
metadata:
    name: pod-vol-nfs
    namespace: default
spec:
    containers:
    - name: myapp
      image: myapp:v1
      volumeMounts:
      - name: html
        mountPath: /usr/share/nginx/html
    volumes:
    - name: html
      nfs:
        path: /data/volumes   ##nfs 服务节点提供的目录
        server: nfs.server   ## 提供nfs服务的节点   
  • pvc pv 架构
    在这里插入图片描述
    在这里插入图片描述
  • 查看pvc使用方法:
    kubectl explain pods.spec.volumes.persistenVolumeClaim
    kubectl explain pvc
  • 把nfs存储先定义为pv, pv属于集群级别资源,不能定义在名称空间中
#pv-demo.yaml
apiVersion: v1
kind: PersistentVolume
metadata;
    name: pv001
    labels:
      name: pv001
spec:
    nfs: 
      path: /data/volumes/v1
      server: nfs.server
    acdessModes: ["ReadWriteMany","ReadWriteOnce"] ##读写模型,多路只读,单路只读
    capacity:
        storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata;
    name: pv002
    labels:
      name: pv002
spec:
    nfs: 
      path: /data/volumes/v2
      server: nfs.server
    acdessModes: ["ReadWriteMany","ReadWriteOnce"] ##读写模型,多路只读,单路只读
    capacity:
        storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata;
    name: pv003
    labels:
      name: pv003
spec:
    nfs: 
      path: /data/volumes/v3
      server: nfs.server
    acdessModes: ["ReadWriteMany","ReadWriteOnce"] ##pv读写模型,多路只读,单路只读
    capacity:
        storage: 20Gi  ##pv指定大小

kubectl apply -f pv-demo.yaml
kubectl get pv
RECLAIM_POLICY 回收策略
在这里插入图片描述

  • pvc 创建, 有名称空间和pod在同一个名称空间下
# pod-vol-pvc.yaml
apiVersion: v`
kind: PersistentVolumeClaim
metadata:
    name: mypvc
    namespace: default
spec:
    accessModes: ["ReadWriteMany"]  ##在pv的包含下
    resources:
      requests:    ###要求的存储空间,不能大于pv
      storage: 6Gi  ##大于6Gi的pv会自动绑定
---
apiVersion: v1
kind: Pod
metadata:
    name: pod-vol-pvc
    namespace: default
spec:
   containers:
   - name: myapp
     image: myspp:v1
     volumeMounts:
     - name: html
       mountPath: /usr/share/nginx/html/
   vulumes:
   - name: html
     persistentVolumeClaim:
       claimName: mypvc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值