【问题标题】:gcloud command changes ownership of the current directorygcloud 命令更改当前目录的所有权
【发布时间】:2019-02-28 13:48:01
【问题描述】:

我正在执行从 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

【问题讨论】:

    标签: gcloud kubectl


    【解决方案1】:

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

    报告于https://issuetracker.google.com/issues/143911217

    【讨论】:

    【解决方案2】:

    恰好是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
    
    • 只需重新安装/更新即可解决二进制问题;
    • 如果配置有问题,那么您可以备份它们并从头开始重新安装kubectl / gsutil,不仅使用apt-get remove ...,还使用apt-get purge ...。请注意:purge 删除配置文件!

    希望这对其他人有帮助。

    【讨论】:

    • 感谢您的建议!运行gcloud components update 对我有用,只有在我的机器重新启动后才能运行。所以,如果你尝试这个但它不起作用,请尝试重新启动!
    猜你喜欢
    • 2010-12-10
    • 2023-04-02
    • 2014-04-16
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    相关资源
    最近更新 更多