你好老师,我测试过了,nfs 环境下,pvc 和 pv 也是一对一关系的:
pv 定义:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
path: /home/user/shared/nginx
server: 172.16.31.130
readOnly: false
pvc 定义:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc-1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc-2
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
pod 定义:
apiVersion: v1
kind: Pod
metadata:
name: "app1"
namespace: default
labels:
app: "app1"
spec:
containers:
- name: app1
image: "nginx:latest"
resources:
limits:
cpu: 200m
memory: 500Mi
requests:
cpu: 100m
memory: 200Mi
ports:
- containerPort: 80
name: http
volumeMounts:
- name: workdir
mountPath: /usr/share/nginx/html
volumes:
- name: workdir
persistentVolumeClaim:
claimName: my-pvc-1
---
apiVersion: v1
kind: Pod
metadata:
name: "app2"
namespace: default
labels:
app: "app2"
spec:
containers:
- name: app2
image: "nginx:latest"
resources:
limits:
cpu: 200m
memory: 500Mi
requests:
cpu: 100m
memory: 200Mi
ports:
- containerPort: 80
name: http
volumeMounts:
- name: workdir
mountPath: /usr/share/nginx/html
volumes:
- name: workdir
persistentVolumeClaim:
claimName: my-pvc-2
依次 apply 三种资源:pv、pvc、pod,最终结果是 pv 被 my-pvc-1 绑定,进而被 app1 所用。
但是 app2 一直处于 pending 状态,因为 my-pvc-2 无法绑定 pv。
pod app2 Events:
Warning FailedScheduling 99s default-scheduler 0/3 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod..
pvc my-pvc-2 Events:
(这里我也测试过指定存储类的情况,只要不是动态供应,就无法绑定 pv)
Normal FailedBinding 93s (x26 over 7m40s) persistentvolume-controller no persistent volumes available for this claim and no storage class is set
结果:
k get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
my-pvc-1 Bound my-pv 10Gi RWO 8m33s
my-pvc-2 Pending 8m33s
k get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
my-pv 10Gi RWO Retain Bound default/my-pvc-1 9m9s
k get pod
NAME READY STATUS RESTARTS AGE
app1 1/1 Running 0 9m26s
app2 0/1 Pending 0 9m26s
登录后可查看更多问答,登录/注册