• pv&pvc


    1.概念

    Volume:NFS、CEPH、GFS
    PersistentVolume:NFS、CEPG/GFS
    
    PV、PVC
    PV:由k8s配置的存储,PV同样是集群的一类资源,yaml。
    
    PVC:对PV的申请,
    PersistentVolumeClaim
    
    PV文档:https://kubernetes.io/docs/concepts/storage/persistent-volumes/
    
    
    Nfs类型的PV:
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv0003
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      storageClassName: slow
      mountOptions:
        - hard
        - nfsvers=4.1
      nfs:
        path: /tmp
        server: 172.17.0.2
    
    persistentVolumeReclaimPolicy:#类型
    	Recycle: 回收,rm -rf
    		Deployment -> PVC  PV, Recycle。
    	Retain:保留。
    	Delete:PVC –-> PV,删除PVC后PV也会被删掉,这一类的PV,需要支持删除的功能,动态存储默认方式。
    
    Capacity:PV的容量。
    volumeMode:挂载的类型,Filesystem,block
    
    accessModes:这个的PV访问模式:
    	ReadWriteOnce:RWO,可以被单节点以读写的模式挂载。
    	ReadWriteMany:RWX,可以被多节点以读写的形式挂载。
    	ReadOnlyMany:ROX,可以被多个节点以只读的形式挂载。
    storageClassName:PV的类,可以说是一个类名,PVC和PV的这个名字一样,才能被绑定。
    
    Pv的状态:
    	Available:空闲的PV,没有被任何PVC绑定。
    	Bound:已经被PVC绑定
    	Released:PVC被删除,但是资源未被重新使用
    	Failed:自动回收失败。
    

    2.创建nfs的pV

    [root@k8s-master01 ~]# cat nfs-pv.yaml 
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: nfs-pv
    spec:
      storageClassName: manual
      capacity: 
        storage: 1Gi
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      nfs:
        path: /data/k8s  # 指定nfs的挂载点
        server: 192.168.0.120  # 指定nfs服务地址
    [root@k8s-master01 ~]# kubectl create -f nfs-pv.yaml 
    persistentvolume/pv-nfs created
    

    3.创建一个PVC

    [root@k8s-master01 ~]# cat test-pvc.yaml 
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nfs-pvc
    spec:
      storageClassName: manual   ###跟pv的名字对应
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    

    4.查看pv&pvc状态

    [root@master01 pvc]# kubectl get pv
    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
    nfs-pv   1Gi        RWO            Retain           Bound    default/nfs-pvc   manual                  2m30s
    [root@master01 pvc]# kubectl get pvc
    NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    nfs-pvc   Bound    nfs-pv   1Gi        RWO            manual         3m53s
    

    5.pod使用pvc

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-volumes
    spec:
      volumes:
      - name: nfs
        persistentVolumeClaim:
          claimName: nfs-pvc
      containers:
      - name: web
        image: nginx
        ports:
        - name: web
          containerPort: 80
        volumeMounts:
        - name: nfs
          subPath: test-volumes
          mountPath: "/usr/share/nginx/html"
    

    6.定义html,进行访问测试

    [root@master01 ~]# cat /data/k8s/test-volumes/index.html 
    1
    [root@master01 ~]# kubectl get pod -owide
    NAME                            READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
    test-volumes                    1/1     Running   0          3m26s   10.244.2.31   node02   <none>           <none>
    [root@master01 ~]# curl 10.244.2.31
    1
    
  • 相关阅读:
    hive 之only supports newline ' ' right now. Error encountered near token ''报错
    四、第三方图标库
    三、工具模块封装(二):封装mock模块
    三、工具模块封装(一):封装axios模块
    二、前端项目案例
    一、搭建前端开发环境(Vue+element)
    注册中心(Consul)
    系统服务监控(Spring Boot Admin)
    JWT
    Spring Security(四)
  • 原文地址:https://www.cnblogs.com/Applogize/p/14645227.html
Copyright © 2020-2023  润新知