No, there shouldn’t be. The error here looks like kubelet has either cached the location to the gcloud binary or otherwise inspected the system to find that and stored it in some configuration file. Beyond that without looking at the kubelet snap I can’t say what might be the cause of this.
After some sleuthing on my home folder, it looks like my kube config is reflecting the real path to the gcloud binary as it was when the context was created, instead of the symlink at /snap/bin/gcloud
I’ve encountered this issue, myself. The problem is that when you use the gcloud cli to save details of a google-cloud-hosted kubernetes into ~/.kube/config so that you can use kubectl to access it the gcloud cli introspects itself to determine its own executable’s path. It then saves that full path into the kube config so that the kubectl can call gcloud as a credential helper to assist with the authorisation process to access the google-cloud gke cluster. Once the gcloud snap is updated three times from the original invokation that saved the config to kubectl the path it saved will be removed from the system because it used the full path to the executable instead of the path to /snap/bin/gcloud so it included the snap revision number as part of the path. Three updates and the snap revision referenced is removed from the system to maintain the maximum of three available revisions (the active one and two previous revisions for rollback if required).
The solution to this will be for the gcloud project to include a code-path that recognises when it should use the /snap/bin/gcloud path or rely on searching the $PATH. This likley means we need Google to fix this. In the meantime you may be able to use /snap/bin/gcloud in place of the full path or change the revision number to the magic name current.
Thinking further on using /snap/bin/gcloud this will potentially fall foul of apparmor weirdness when calling a different classic snap’s executable (gcloud) from the current classic snap (kubectl)…