【问题标题】:Kubernetes suddenly stopped being able to connect to serverKubernetes 突然无法连接到服务器
【发布时间】:2019-10-23 08:15:11
【问题描述】:

我成功连接到 Kubernetes 集群并使用服务和 Pod。在某一时刻,这种情况发生了变化,每次我尝试连接到集群时都会收到以下错误:

PS C:\Users\xxx> kubectl get pods
Unable to connect to the server: error parsing output for access token command "C:\\Program Files (x86)\\Google\\Cloud SDK\\google-cloud-sdk\\bin\\gcloud.cmd config config-helper --format=json": yaml: line 4: could not find expected ':'

我不确定问题是什么。不幸的是,谷歌也没有为我带来任何结果。

我没有更改任何配置文件或任何东西。问题是它前一秒工作,下一秒不工作。

谢谢。

【问题讨论】:

    标签: kubernetes gcloud


    【解决方案1】:

    看起来 GKE 的默认身份验证插件在 Windows 上可能存在错误。 kubectl 正在尝试运行 gcloud 以获取令牌以对您的集群进行身份验证。如果你运行 kubectl config view 你可以看到它试图运行的命令,然后自己运行它来看看它是否/为什么会失败。

    正如 Alexandru 所说,一种解决方法是使用 Google 应用程序默认凭据。实际上,gcloud 容器已经内置支持这样做,您可以通过设置属性来切换:

    gcloud config set container/use_application_default_credentials true试试运行这个或者设置环境变量

    %CLOUDSDK_CONTAINER_USE_APPLICATION_DEFAULT_CREDENTIALS% 为真。

    引用自here

    这个问题的解决方法是:

    gcloud container clusters get-credentials <cluster-name> 如果您不知道您的集群名称,请通过gcloud container clusters list 查找最后,如果没有问题,请使用gcloud auth application-default login 并使用相关详细信息登录

    【讨论】:

    • 这给了我一些方向。不幸的是,它没有解决问题。如果我运行命令错误抛出说没有工作,我得到它正在寻找的是凭证 JSON 文件。访问和 id 令牌在那里,文件本身打开得很好。命令:gcloud config config-helper --format=json 在哪里可以更改环境变量?
    • export CLOUDSDK_CONTAINER_USE_APPLICATION_DEFAULT_CREDENTIALS = true
    • 哦!你正在使用窗户。 setx CLOUDSDK_CONTAINER_USE_APPLICATION_DEFAULT_CREDENTIALS "true"
    • 把它放到你的命令行中,在那里你输入了kubectl get pods 另外,你真的很想安装powershell并熟悉一下。
    • 你能告诉我gcloud container clusters get-credentials <cluster-name> 的输出吗?如果你不知道你的集群名称,请通过gcloud container clusters list 找到它最后,如果这些没有问题,请执行gcloud auth application-default login 并使用相关详细信息登录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2022-06-20
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 2017-11-05
    相关资源
    最近更新 更多