Repository: kubernetes
Issue: Kube scheduler has a confusing error message when scheduling pods that use claims with `ReadWriteOncePod` access mode
Labels: kind/bug,sig/scheduling,needs-triage

### What happened?

When we deploy a claim like:
```yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ebs-claim
spec:
  accessModes:
  - ReadWriteOncePod
  resources:
    requests:
      storage: 4Gi
```

And then deploy two pods:
```yaml
---
apiVersion: v1
kind: Pod
metadata:
  name: app
spec:
  containers:
  - name: app
    image: centos
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ebs-claim
---
apiVersion: v1
kind: Pod
metadata:
  name: app2
spec:
  containers:
  - name: app
    image: centos
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ebs-claim
```
Second pod is rightfully not scheduled.
It has the following error message:
```
 k describe po app2

Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  5s    default-scheduler  0/5 nodes are available: 5 node has pod using PersistentVolumeClaim with the same name and ReadWriteOncePod access mode. preemption: 0/5 nodes are available: 5 No preemption victims found for incoming pod.
  Warning  FailedScheduling  2s    default-scheduler  0/5 nodes are available: 5 node has pod using PersistentVolumeClaim with the same name and ReadWriteOncePod access mode. preemption: 0/5 nodes are available: 5 No preemption victims found for incoming pod.
```
This error message is misleading - there are no 5 nodes that have pods using this PersistentVolumeClaim.

Error message comes from https://github.com/kubernetes/kubernetes/blob/v1.30.5/pkg/scheduler/framework/plugins/volumerestrictions/volume_restrictions.go#L55.
It's set in the following method - https://github.com/kubernetes/kubernetes/blob/v1.30.5/pkg/scheduler/framework/plugins/volumerestrictions/volume_restrictions.go#L280
It's raised upon calling the `Filter` method - https://github.com/kubernetes/kubernetes/blob/v1.30.5/pkg/scheduler/framework/plugins/volumerestrictions/volume_restrictions.go#L314

### What did you expect to happen?

I expect that we get an error message that reads something like:
```
  Warning  FailedScheduling  5s    default-scheduler  0/5 nodes are available: 5 nodes were not able to schedule a pod using PersistentVolumeClaim <PVC-Name> name, ReadWriteOncePod access mode. preemption: 0/5 nodes are available: 5 No preemption victims found for incoming pod.
```

or similar message, that points the operator to the actual reason for not scheduling the pod.


### How can we reproduce it (as minimally and precisely as possible)?

Build a cluster with 3 or more nodes and apply the following manifests:
```ymal
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ebs-claim
spec:
  accessModes:
  - ReadWriteOncePod
  resources:
    requests:
      storage: 4Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: app
spec:
  containers:
  - name: app
    image: centos
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ebs-claim
---
apiVersion: v1
kind: Pod
metadata:
  name: app2
spec:
  containers:
  - name: app
    image: centos
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ebs-claim
```

### Anything else we need to know?

_No response_

### Kubernetes version

<details>

```console
k version
Client Version: v1.31.0
Kustomize Version: v5.4.2
Server Version: v1.30.5
```

</details>

but I believe it's applicable for other versions as well.

### Cloud provider

Message is the same, regardless of the provider.

### OS version

<details>

```console
# On Linux:
$ cat /etc/os-release
# paste output here
$ uname -a
# paste output here

# On Windows:
C:\> wmic os get Caption, Version, BuildNumber, OSArchitecture
# paste output here
```

</details>


### Install tools

<details>

</details>


### Container runtime (CRI) and version (if applicable)

<details>

</details>


### Related plugins (CNI, CSI, ...) and versions (if applicable)

<details>

</details>