我正在执行从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
。
答案 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将空值解析为当前目录,更改权限并尝试向其写入