kubectl 无法连接 GKE,失败并显示 x509:由未知授权机构签署的证书
kubectl cannot connect GKE, failing with x509: certificate signed by unknown authority
我无法从我的机器连接到任何 GKE 集群。从远程机器上,它正在工作,但不是从我的机器上,我不明白为什么。如果你们中的一些人有任何想法...
我已经从 gcloud (gcloud components install kubectl
) 中安装了 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
)它失败并显示以下消息:
Unable to connect to the server: x509: certificate signed by unknown authority
我只是想不通为什么我的本地 kubectl
无法验证 Google CA。
我遵循了我找到的所有资源,尝试了其他集群,在其他 zone/region 中,使用了不同版本的 python(2.7 和 3.6),重新初始化 gcloud,使用了另一个 Google 帐户,另一个版本的 kubectl(1.11、1.12 和 1.14),在 Linux(Mint 19.1 Tessa)中更新我的 CA(sudo update-ca-certificates
)。
有没有人遇到过这个问题并找到了解决方案?
简单的方法是 运行 gcloud auth login
,正如 documentation 所说:
gcloud auth login - authorize gcloud to access the Cloud Platform with Google user credentials
Obtains access credentials for your user account via a web-based authorization flow. When this command completes successfully, it sets the active account in the current configuration to the account specified. If no configuration exists, it creates a configuration named default.
Use gcloud auth list
to view credentialed accounts.
这将要求您使用您的帐户登录 Google Cloud SDK 并要求允许访问:
View and manage your data across Google Cloud Platform services
View and manage your Google Compute Engine resources>
View and manage your applications deployed on Google App Engine
过程如何Install SDK with apt-get on Debian and Ubuntu, and over here Installing with yum Red Hat and CentOS。
如果有人在能够登录后 运行 参与其中,则此解决方案对我有用
gcloud container clusters get-credentials YOURCLUSTERHERE --zone YOURCLUSTERZONEHERE
填写信息并 运行 后,您应该可以继续了。
这个问题发生在我身上,因为我的证书错误。可能由于 terraform 无法连接到您的远程集群的相关原因而发生。
为了使用已经设置的默认 kubeconfig 凭据,您可以将您的提供商留空。
provider "kubernetes" {
}
你们都知道,我这边的问题(以及为什么我有时连接工作而有时不工作的混乱结果的原因)是在我的专业网络上我有一个 MITM 代理,它用我公司的证书替换 Google 证书。
所以...证书被拒绝kubectl
...很正常。
我无法从我的机器连接到任何 GKE 集群。从远程机器上,它正在工作,但不是从我的机器上,我不明白为什么。如果你们中的一些人有任何想法...
我已经从 gcloud (gcloud components install kubectl
) 中安装了 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
)它失败并显示以下消息:
Unable to connect to the server: x509: certificate signed by unknown authority
我只是想不通为什么我的本地 kubectl
无法验证 Google CA。
我遵循了我找到的所有资源,尝试了其他集群,在其他 zone/region 中,使用了不同版本的 python(2.7 和 3.6),重新初始化 gcloud,使用了另一个 Google 帐户,另一个版本的 kubectl(1.11、1.12 和 1.14),在 Linux(Mint 19.1 Tessa)中更新我的 CA(sudo update-ca-certificates
)。
有没有人遇到过这个问题并找到了解决方案?
简单的方法是 运行 gcloud auth login
,正如 documentation 所说:
gcloud auth login - authorize gcloud to access the Cloud Platform with Google user credentials
Obtains access credentials for your user account via a web-based authorization flow. When this command completes successfully, it sets the active account in the current configuration to the account specified. If no configuration exists, it creates a configuration named default. Use
gcloud auth list
to view credentialed accounts.
这将要求您使用您的帐户登录 Google Cloud SDK 并要求允许访问:
View and manage your data across Google Cloud Platform services
View and manage your Google Compute Engine resources>
View and manage your applications deployed on Google App Engine
过程如何Install SDK with apt-get on Debian and Ubuntu, and over here Installing with yum Red Hat and CentOS。
如果有人在能够登录后 运行 参与其中,则此解决方案对我有用
gcloud container clusters get-credentials YOURCLUSTERHERE --zone YOURCLUSTERZONEHERE
填写信息并 运行 后,您应该可以继续了。
这个问题发生在我身上,因为我的证书错误。可能由于 terraform 无法连接到您的远程集群的相关原因而发生。 为了使用已经设置的默认 kubeconfig 凭据,您可以将您的提供商留空。
provider "kubernetes" {
}
你们都知道,我这边的问题(以及为什么我有时连接工作而有时不工作的混乱结果的原因)是在我的专业网络上我有一个 MITM 代理,它用我公司的证书替换 Google 证书。
所以...证书被拒绝kubectl
...很正常。