Thi*_*man 5 google-cloud-platform google-kubernetes-engine
我曾经愉快地部署到Kubernetes Engine了一段时间,但是在开发集成的云容器构建器管道时,我开始遇到麻烦。
我不知道发生了什么变化。我无法再部署到kubernetes,即使以前没有Cloud Builder时也是如此。
pod展开过程给出错误,表明它无法从注册表中提取。这似乎很奇怪,因为图像存在(我可以使用cli来拉出它们),并且向我的用户和云构建器服务帐户授予了所有可能相关的权限。
我收到错误ImagePullBackOff并在pod事件中看到此错误:
无法提取图像“ gcr.io/my-project/backend:f4711979-eaab-4de1-afd8-d2e37eaeb988”:rpc错误:代码=未知desc =未授权:需要身份验证
这是怎么回事?谁需要授权,目的是什么?
就我而言,我的集群没有“存储读取”权限,这是GKE从GCR提取映像所必需的。
我的集群没有适当的权限,因为我是通过terraform创建的集群,并且没有包含该node_config.oauth_scopes块。通过控制台创建群集时,默认情况下会添加“存储读取”权限。
我的项目中的凭据不知何故弄乱了。我通过重新初始化一些 API 解决了这个问题,包括 Kubernetes Engine、Deployment Manager 和 Container Builder。
我第一次尝试这个没有成功,因为要禁用某些东西,您必须首先禁用依赖于它的所有 API。如果您通过 GCloud Web UI 执行此操作,那么您可能会看到并非全部可在 UI 中禁用的服务列表。
我了解到,使用gcloudCLI 您可以列出项目的所有 API 并正确禁用所有内容。
之后事情就顺利了。
我之所以知道事情搞砸了,是因为我有一个与生产环境相同的副本,而这些问题并不存在。开发环境进行了大量的迭代并弄乱了凭证,因此某些地方发生了损坏。
以下是一些有用命令的示例:
gcloud projects get-iam-policy $PROJECT_ID
gcloud services disable container.googleapis.com --verbosity=debug
gcloud services enable container.googleapis.com
更多信息请参见此处,包括如何恢复服务帐户凭据。
| 归档时间: |
|
| 查看次数: |
2359 次 |
| 最近记录: |