gcloud命令更改当前目录的所有权

时间:2019-02-28 13:48:01

标签: gcloud kubectl

我正在执行从GCP获取kubernetes集群凭据的常规操作。 gcloud命令不会获取凭据,并且会意外地更新本地目录的所有权:

~/tmp/1> ls
~/tmp/1> gcloud container clusters get-credentials production-ng
Fetching cluster endpoint and auth data.
ERROR: (gcloud.container.clusters.get-credentials) Unable to write file [/home/vladimir/tmp/1]: [Errno 21] Is a directory: '/home/vladimir/tmp/1'

~/tmp/1> ls
ls: cannot open directory '.': Permission denied

其他命令,例如gcloud container clusters list可以正常工作。我试图重新安装gcloud

2 个答案:

答案 0 :(得分:1)

kubectl碰巧是一个问题。重新安装它解决了这个奇怪的问题。

如果您像我一样,坚持使用奇怪的gcloud行为,则以下几点有助于跟踪问题:

  • 检查alias命令是否确实指向了预期的二进制文件;
  • 使用gsutil启动单独的docker容器,并将其提供给您的配置文件。如果gcloud container clusters get-credentials ...在那里顺利运行,则是二进制文件(不是配置文件)的问题:
docker run -it \
       -v $HOME/.config:/root/.config \
       -v $HOME/.kube:/root/.kube google/cloud-sdk:217.0.0-alpine sh
  • 仅通过重新安装/更新即可解决二进制问题;
  • 如果配置存在问题,则可以备份它们并重新使用apt-get remove ...apt-get purge ...重新安装kubectl / gsutil。请注意:purge会删除配置文件!

希望这对其他人有帮助。

答案 1 :(得分:1)

如果您的KUBECONFIG为空,例如:/Users/acme/.kube/config,则会发生这种情况 gcloud将空值解析为当前目录,更改权限并尝试向其写入

https://issuetracker.google.com/issues/143911217报道