01
07
01
06
请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

accessModes:

    - ReadWriteMany
0 回复 有任何疑惑可以回复我~
  • 提问者 AMOLED #1
    你好老师,如果改 accessModes 的话,不能单独只改 pv 的,pv 和 pvc 的都要改,只有二者访问模式相同,才能绑定。
    我测试过了,即使 pv 和 pvc 都改成 ReadWriteMany,也依然不能将两个 pvc 挂载到同一个 pv 上。
    我的理解 ReadWriteMany 的作用是,允许多个 pod 申请同一个 pvc(也就是通过 volumes 挂载的时候指定同一个 pvc),而不是允许多个 pvc 同时绑定一个 pv。
    如果老师这边实操过可以将多个 pvc 绑定到一个 pv 上,麻烦老师有空贴一下详细的 yaml,我可以复现一下。
    回复 有任何疑惑可以回复我~ 2023-06-28 14:24:43
  • 暮闲 回复 提问者 AMOLED #2
    同学你好 是我讲错了 非常谢谢你的指正 给你带了误解实属抱歉 是我太过于想当然了 对应小节我会尽快更新。
    回复 有任何疑惑可以回复我~ 2023-06-28 22:22:57
  • 提问者 AMOLED 回复 暮闲 #3
    感谢老师解答,k8s 东西太多了,某一个小的技术细节记错再正常不过了,我在 stackoverflow 上也找到了有人讨论这个话题:https://stackoverflow.com/questions/44204223/kubernetes-nfs-persistent-volumes-multiple-claims-on-same-volume-claim-stuck
    回复 有任何疑惑可以回复我~ 2023-06-29 09:16:30
weixin_慕粉1501434 2023-07-01 21:56:20

想向大佬请教些问题

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号