k8s存储
docker容器是有生命周期的。
Volume:
emptyDir(空目录):类似docker数据持久化的:docker manager volume
[root@master yaml]# vim emptyDir.yaml
apiVersion: v1
kind: Pod
metadata:
name: producer-consumer
spec:
containers:

  • image: busybox
    name: producer
    volumeMounts:

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

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

    volumes:

  • 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:

  • 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:

  • 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 pv