上一个问题 NFS 下 PV 和 PVC 关系我也测试过了

来源:10-8 PV和PVC工作原理

AMOLED

2023-06-28

你好老师,我测试过了,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
写回答

2回答

暮闲

2023-06-28

同学你好 把nfs pv 读写模式改成这个试试

accessModes:

    - ReadWriteMany
0
3
AMOLED
回复
暮闲
感谢老师解答,k8s 东西太多了,某一个小的技术细节记错再正常不过了,我在 stackoverflow 上也找到了有人讨论这个话题:https://stackoverflow.com/questions/44204223/kubernetes-nfs-persistent-volumes-multiple-claims-on-same-volume-claim-stuck
2023-06-29
共3条回复

weixin_慕粉1501434

2023-07-01

想向大佬请教些问题

0
0

Kubernetes系统精讲 Go语言实战K8S集群可视化

核心知识+高阶应用+原理剖析+二次开发 全方位打通K8S生产实践

399 学习 · 265 问题

查看课程