k8s存儲

k8s存儲
docker容器是有生命週期的。
Volume:
emptyDir(空目錄):相似docker數據持久化的:docker manager volume
[root@master yaml]# vim emptyDir.yaml
apiVersion: v1
kind: Pod
metadata:
name: producer-consumer
spec:
containers:node

  • image: busybox
    name: producer
    volumeMounts:docker

    • mountPath: /producer_dir
      name: shared-volume
      args:
    • /bin/sh
    • -c
    • echo "hello k8s" > /producer_dir/hello; sleep 30000
  • image: busybox
    name: consumer
    volumeMounts:vim

    • mountPath: /consumer_dir
      name: shared-volume
      args:
    • /bin/sh
    • -c
    • cat /consumer_dir/hello; sleep 30000

    volumes:api

  • name: shared-volume
    emptyDir: {}
    [root@master yaml]# kubectl apply -f emptyDir.yaml
    [root@master yaml]# kubectl logs producer-consumer consumer
    hello k8s
    [root@node02 ~]# docker ps
    [root@node02 ~]# docker inspect
    使用場景:在同一個Pod裏,不一樣的容器,共享數據卷。
    若是容器被刪除,數據仍然存在,若是pod被刪除,數據也會被刪除。
    hostPath Volume:相似docker 數據持久化的:bind mount
    若是Pod被刪除,數據會被保留,相比較emptyDir要好一點。不過一旦host崩潰,hostPath也沒法訪問。
    docker或者k8s集羣自己的存儲會採用hostPath這種方式。
    Persistent Volume | PV(持久卷)提早作好的,數據持久化的數據存放目錄。
    Psesistent Volume Claim|PVC(持久卷使用聲明|申請)
    基於NFS服務來作的PV
    [root@master ~]# yum install -y nfs-utils rpcbind
    [root@master ~]# mkdir /nfsdata
    [root@master ~]# vim /etc/exports
    /nfsdata *(rw,sync,no_root_squash)
    [root@master ~]# systemctl start rpcbind
    [root@master ~]# systemctl start nfs-server.service
    [root@master ~]# showmount -e

[root@master yaml]# vim nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv
spec:
capacity:
storage: 1Gi
accessModes:app

  • ReadWriteOnce
    persistentVolumeReclaimPolicy: Recycle
    storageClassName: nfs
    nfs:
    path: /nfsadta/pv1
    server: 192.168.2.10
    [root@master yaml]# kubectl apply -f nfs-pv.yaml
    [root@master yaml]# kubectl get pv

accessModes:ide

  • ReadWriteOnce: 能以讀-寫mount到單個節點。
  • ReadWriteMany: 能以讀-寫mount到多個節點。
  • ReadOnlyOnce:能以只讀的方式mount到單個節點。
    persistentVolumeReclaimPolicy:(PV存儲空間的回收策略是什麼)
    Recycle:自動清除數據。
    Retain:須要管理員手動回收。
    Delete:雲存儲專用。
    PV和PVC相互的關聯:經過的市storageclassname && accessmodes。
    [root@master yaml]# vim nfs-pvc.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: test-pvc
    spec:
    accessModes:
    • ReadWriteOnce
      resources:
      requests:
      storage: 1Gi
      storageClassName: nfs
      [root@master yaml]# kubectl apply -f nfs-pvc.yaml
      [root@master yaml]# kubectl get pvc

[root@master yaml]# kubectl get pvserver

相關文章
相關標籤/搜索