Kubelet should stop using annotations to pass CDI device IDs to CRI runtimes. CDIDevices CRI field should be used for this purpose.

This should be done when Kubelet that doesn't support CRI field reaches EOL and two major CRI runtimes support CRI field.

Here is a PR comment that gives more details about this: https://github.com/kubernetes/kubernetes/pull/115891/files#r1112169121

- Kubelet started using CDIDevices CRI field in [v1.28.0](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#api-change-2). Previous version 1.27 will reach EOL [2024-06-28](https://kubernetes.io/releases/patch-releases/#1-27).

- CRI-O started using it in [v1.28.0](https://github.com/cri-o/cri-o/releases/tag/v1.28.0). Previous version 1.27 will reach EOL [2024-06-28](https://kubernetes.io/releases/patch-releases/#1-27) together with Kubernetes 1.27.

- Containerd started using it in [1.7.2](https://github.com/containerd/containerd/releases/tag/v1.7.2). Version 1.7 will reach EOL in a 6 months after Containerd 2.0 release https://github.com/containerd/containerd/blob/main/RELEASES.md. Previous version 1.6 doesn't support CDI injections and should not be considered.

So, safer option would be to wait until Containerd 1.7 reaches EOL. However it's relatively safe to do it earlier when 1.7.0 and 1.7.1 have little chances to be in real use.

Containerd v1.7.0 and v1.7.1 is not used by the Linux distributions from [this long list](https://pkgs.org/search/?q=containerd), so it's safe to remove annotations support from the Kubelet in 1.31 in my opinion.
Passing CDI devices as annotations should be removed
This is a GitHub Issue
repo:kubernetes
owner:kubernetes
Title : Passing CDI devices as annotations should be removed
Issue date:

--- start body ---
Kubelet should stop using annotations to pass CDI device IDs to CRI runtimes. CDIDevices CRI field should be used for this purpose.

This should be done when Kubelet that doesn't support CRI field reaches EOL and two major CRI runtimes support CRI field.

Here is a PR comment that gives more details about this: https://github.com/kubernetes/kubernetes/pull/115891/files#r1112169121

- Kubelet started using CDIDevices CRI field in [v1.28.0](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#api-change-2). Previous version 1.27 will reach EOL [2024-06-28](https://kubernetes.io/releases/patch-releases/#1-27).

- CRI-O started using it in [v1.28.0](https://github.com/cri-o/cri-o/releases/tag/v1.28.0). Previous version 1.27 will reach EOL [2024-06-28](https://kubernetes.io/releases/patch-releases/#1-27) together with Kubernetes 1.27.

- Containerd started using it in [1.7.2](https://github.com/containerd/containerd/releases/tag/v1.7.2). Version 1.7 will reach EOL in a 6 months after Containerd 2.0 release https://github.com/containerd/containerd/blob/main/RELEASES.md. Previous version 1.6 doesn't support CDI injections and should not be considered.

So, safer option would be to wait until Containerd 1.7 reaches EOL. However it's relatively safe to do it earlier when 1.7.0 and 1.7.1 have little chances to be in real use.

Containerd v1.7.0 and v1.7.1 is not used by the Linux distributions from [this long list](https://pkgs.org/search/?q=containerd), so it's safe to remove annotations support from the Kubelet in 1.31 in my opinion.
--- end body ---
