持久量和持久量声明
永久卷(PV) -这是由管理员提供的一部分网络存储。它是群集中的一种资源,它独立于使用PV的任何单个容器。
持久体积声明(PVC) -Kubernetes请求为其Pod分配的存储称为PVC。用户不需要知道基础供应。必须在创建容器的相同名称空间中创建声明。
创建持久卷
kind: PersistentVolume ---------> 1
apiVersion: v1
metadata:
name: pv0001 ------------------> 2
labels:
type: local
spec:
capacity: -----------------------> 3
storage: 10Gi ----------------------> 4
accessModes:
- ReadWriteOnce -------------------> 5
hostPath:
path: "/tmp/data01" --------------------------> 6
在上面的代码中,我们定义了-
- kind:PersistentVolume → 我们已将种类定义为PersistentVolume,它告诉kubernetes使用的yaml文件是用于创建持久卷的。
- name:pv0001 → 我们正在创建的PersistentVolume的名称。
- capacity: → 此规格将定义我们尝试创建的PV的容量。
- storage:10Gi → 这告诉底层基础结构我们正在尝试在定义的路径上声明10Gi空间。
- ReadWriteOnce → 这将告诉我们正在创建的卷的访问权限。
- path: "/tmp/data01" → 此定义告诉计算机我们正在尝试在基础结构的该路径下创建卷。
创建PV
$ kubectl create –f local-01.yaml
persistentvolume "pv0001" created
检查PV
$ kubectl get pv
NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
pv0001 10Gi RWO Available 14s
描述PV
$ kubectl describe pv pv0001
创建持久卷声明
kind: PersistentVolumeClaim --------------> 1
apiVersion: v1
metadata:
name: myclaim-1 --------------------> 2
spec:
accessModes:
- ReadWriteOnce ------------------------> 3
resources:
requests:
storage: 3Gi ---------------------> 4
在上面的代码中,我们定义了-
- kind:PersistentVolumeClaim → 它指示基础结构我们正在尝试声明指定的空间量。
- name:myclaim-1 → 我们尝试创建的声明的名称。
- ReadWriteOnce → 这将指定我们尝试创建的声明的模式。
- storage:3Gi → 这将告诉kubernetes我们正在尝试声明的空间量。
创建PVC
$ kubectl create –f myclaim-1
persistentvolumeclaim "myclaim-1" created
获取有关PVC的详细信息
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
myclaim-1 Bound pv0001 10Gi RWO 7s
描述PVC
$ kubectl describe pv pv0001
在POD中使用PV和PVC
kind: Pod
apiVersion: v1
metadata:
name: mypod
labels:
name: frontendhttp
spec:
containers:
- name: myfrontend
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts: ----------------------------> 1
- mountPath: "/usr/share/tomcat/html"
name: mypd
volumes: -----------------------> 2
- name: mypd
persistentVolumeClaim: ------------------------->3
claimName: myclaim-1
在上面的代码中,我们定义了-
- volumeMounts: →这是容器中将要进行安装的路径。
- volumes: →此定义定义了我们要声明的体积定义。
- persistentVolumeClaim: →在此之下,我们定义将在定义的pod中使用的卷名。