Short answer yes, it has been removed.
Kubelet
--cni-bin-dir string Default: /opt/cni/bin
A comma-separated list of full paths of directories in which to search for CNI plugin binaries. This docker-specific flag only works when container-runtime is set to docker. (DEPRECATED: will be removed along with dockershim.)
source - https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/
Dockershim
Dockershim was removed from Kubernetes with the release of v1.24
source - https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/
Conclusion
Putting those two bits together --cni-bin-dir
was deprecated then removed with dockershim for the v1.24 release.
I find this docs page useful for figuring out details about the different flags used by kubernetes components:
https://kubernetes.io/docs/reference/command-line-tools-reference/
updated
It is up to your CNI to manage to cni bin dir, for example if you are using flannel and its DaemonSet it will create those dirs for you.
Taken from https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml#L236-L238
...
- name: cni-plugin
hostPath:
path: /opt/cni/bin
...
This DaemonSet defines some volumes and creates the dir for you on the host
I believe Kubelet doesn't actually care to interact with your CNI, your container runtime is suppose to do that.