管理存储资源

1、emptyDir

apiVersion: v1
kind: Pod
metadata:
  name: producer-consumer
spec:
  containers:
  - image: busybox
    name: producer
    volumeMounts:
    - mountPath: /producer_dir
      name: shared-volume
    arge:
    - /bin/sh
    - -c
    - echo "hello world" > /producer_dir/hello ; sleep 30000
  - image: busybox
    name: consumer
    volumeMounts:
    - mountPath: /consumer_dir
      name: shared-volume
    arge:
    - /bin/bash
    - -c
    - cat /consumer_dir/hello ; sleep 30000
  volumes:
  - name: shared-volume
    emptyDir: {}

模拟一个Pod中的两个容器使用一个volume;
1、文件最底部volumes定义了一个emptyDir类型的volumes shared-volumes。
2、producer容器将shared-volume mount到/producer_dir目录;
3、producer通过echo将数据写到文件hello里
4、consumer容器将shared_volume mount到/consumer_dir 目录中;
5、consumer通过cat从文件hello中读取数据

emptyDir是Host上创建的临时目录,其优点是能够方便的为Pod中的容器提供共享存储,不需要额外的配置。但他不具备持久性,如果Pod不存在了,emptyDir也就没有了,根据这个特性,emptyDir特别适合Pod中的容器需要临时共享存储空间的场景;

2、hostPath Volume

apiVersion: v1
kind: Pod
metadata:
  name: producer-consumer
spec:
  containers:
  - image: busybox
    name: producer
    volumeMounts:
    - mountPath: /etc/kubernetes
      name: k8s
      readOnly: true
    - mountPath: /etc/ssl/certs
      name: certs
    - mountPath: /etc/pki
      name: pki
  dnsPolicy: ClusterFirst
  hostNetwork: true
  nodeName: k8s-master
  restartPolicy: Always
  securityContext: {}
  terminationGracePeriondSeconds: 30
  tolerations:
  - effect: NoExecute
    operator: Exists
  volumes:
  - hostPath:
      path: /etc/kubernetes
    name: k8s
  - hostPath:
      path: /etc/ssl/certs
    name: certs
  - hostPath:
      path: /etc/pki
    name: pki 

注:这里定义了三个hostPath volume k8s、certs、pki,分别对应目录/etc/kubernetes、/etc/ssl/certs和/etc/pki。如果Pod被销毁,hostPath对应的目录也还会被保留,从这点看,hostPath的持久性比emptyDir高;

hostPath与emptyDir区别:hostPath是已存在的目录挂载共享给容器,而emptyDir则是挂载时生成的目录;

PV&PVC
PV(PersistentVolume):是外部存储系统中的一块存储空间,由管理员创建和维护。
PVC(PersistentVolumeClaim):是对PV的申请,PVC通常由普通用户创建和维护,需要为Pod分配存储资源时,用户可以创建一个PVC,指明存储资源的容量大小和访问方式等信息,Kubernetes会查找并提供满足条件的PV。

你可能感兴趣的:(kubernetes)