kubectl无法连接GKE,失败并出现x509:证书由未知授权机构签名

时间:2019-05-16 12:56:27

标签: google-kubernetes-engine gcloud kubectl

我无法从计算机连接到任何GKE群集。在远程机器上,它正在工作,但是在我的机器上却没有,我不知道为什么。如果你们当中有人有什么想法...

我已经从gcloud(kubectl)内安装了gcloud components install kubectl

我正在运行gcloud init,然后在现有群集上或在新创建的gcloud container clusters create my-cluster --preemptible --cluster-version 1.12.7-gke.10 --machine-type n1-standard-1 --disk-size 20 --num-nodes 1群集上

我正在使用gcloud container clusters get-credentials my-cluster --zone europe-west1-b --project my-project-123456检索我的凭据,这为我的kubectl创建了新的上下文。切换到它(使用kubectx)。

但是当我尝试联系我的集群(例如kubectl get pods)时,它失败并显示以下消息:

  

无法连接到服务器:x509:未知授权机构签名的证书

我只是弄不清楚为什么我的本地kubectl无法验证GoogleCA。 我跟踪了我发现的所有资源,并尝试在其他区域/区域中的其他群集中使用其他版本的python(2.7和3.6),重新初始化gcloud,使用了另一个Google帐户,另一个版本的kubectl(1.11、1.12和1.14 ),请在Linux(薄荷19.1 Tessa)上更新我的CA(sudo update-ca-certificates)。

有人已经面对这个问题并找到了解决方案吗?

4 个答案:

答案 0 :(得分:6)

如果有人能够登录后遇到此问题,则此解决方案对我有效

gcloud container clusters get-credentials YOURCLUSTERHERE --zone YOURCLUSTERZONEHERE

填写信息并运行后,您应该可以继续前进。

答案 1 :(得分:1)

简便的方法将运行gcloud auth login,正如documentation所说:

  

gcloud身份验证登录-授权gcloud使用Google用户凭据访问Cloud Platform

     

通过基于Web的授权流程获取用户帐户的访问凭据。成功完成此命令后,它将当前配置中的活动帐户设置为指定的帐户。如果没有配置,它将创建一个名为default的配置。   使用gcloud auth list查看凭据帐户。

这将要求您使用您的帐户登录Google Cloud SDK,并要求允许访问以下内容:

  
      
  • 查看和管理跨Google Cloud Platform服务的数据

  •   
  • 查看和管理您的Google Compute Engine资源>

  •   
  • 查看和管理在Google App Engine上部署的应用程序

  •   

有关如何Install SDK with apt-get on Debian and Ubuntu以及此处Installing with yum Red Hat and CentOS的过程。

答案 2 :(得分:0)

这个问题发生在我身上,因为我的证书错误。由于terraform无法与您的远程群集连接的相关原因,可能会发生这种情况。 为了使用已经设置的默认kubeconfig凭据,您可以将提供程序保留为空。

provider "kubernetes" {
}

答案 3 :(得分:0)

众所周知,我这边的问题(以及为什么我的连接有时会混乱而不是其他时间)的原因是,在我的专业网络上我有一个MITM代理,可以代替Google证书和我公司的证书。

所以... kubectl拒绝了证书...很正常。