In case you're wondering what the underlying mechanics of such an error are, seeing a Device or resource busy
typically means there's a kernel-held "lock" on something at that point in the file system and the operation for unlink
-ing (that is the syscall that the rm
command uses to request this action from the kernel) and is prevented, with an error condition (EBUSY). You can learn a lot more about what syscalls are used by running a command through strace
if you want to see all syscalls involved (including the return codes from syscall invocations).
That path looks to me where kubelet manages pod-specific "filesystem-esque" parameters, in this case, what is happening is that every namespace has a default service account that then gets a default token, and that token is transparently mounted inside the pod container's file system. That path mentioned in the error, is the host-level filesystem location of the pod's "internal" filesystem. So in this case, the "lock" in question is a mount-point.
Basically that script is trying to removing that path (perhaps clean-up after itself) and it's still in-use (perhaps the pod was still running), and the script or some command it's invoking is not doing proper error-checking/handling, so you end up seeing that error instead.