为什么从我的主机而不是 gcloud interactive shell 使用 gcloud 命令如此困难?
Why is it so hard to use gcloud commands from my host computer instead of the gcloud interactive shell?
也许我只是有点困惑,但基本上我正在尝试通过我自己的主机 (Mac) 终端而不是提供的 gcloud 使用 gcloud
cli 来建立我的工作流程互动 shell.
我正在通过 运行 向 IAM 成员进行身份验证:
gcloud auth login
它将我带到 Google 云登录页面,我已成功通过该页面进行身份验证,然后在我的 shell 中获得以下内容:
You are now logged in as [MY_EMAIL@gmail.com].
Your current project is [myproperty-1537056464248]. You can change this setting by running:
$ gcloud config set project PROJECT_ID
在此之后,我尝试发出以下命令:
gcloud container clusters create somename
我收到以下错误消息:
ERROR: (gcloud.container.clusters.create) ResponseError: code=400, message=Project "myproperty-1537056464248" has no network named "default".
我的 IAM 用户具有以下角色:
Kubernetes Engine Cluster Admin
Owner
我只想避免使用 gcloud interactive shell 这样我就可以:
- 通过命令行创建集群
- 将 docker 构建推送到 Google Container Registry
- 列出集群
- 创建pods
- 等...
但这些 IAM 政策并没有真正发挥我的预期作用。
我应该改用服务帐户吗?
您遇到了两个明显的错误:
- 第一条错误消息说您的项目缺少 'default' 网络。
您可以通过以下方式检查项目的网络:
$ gcloud compute networks list
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4
default AUTO REGIONAL
如果您创建一个全新的项目,它应该有一个 'default' 网络。
或者您可以指定现有网络:
gcloud container clusters create somename --network=put-existing-network-here
- 第二个错误是项目中缺少权限 'compute.networks.get'。
您可以使用'gcloud projects get-iam-policy PROJECT_ID'验证项目中的实际角色。为您的 IAM 用户查找角色 'owner',如下所示:
$ gcloud projects get-iam-policy PROJECT_ID
- members:
- user:username@somedomain.com
role: roles/owner
新项目应该带有一个名为 default
的网络,但我最终得到了一个根本没有任何网络的网络(这导致我看到了同样的错误)。
创建一个后...
gcloud compute networks create default
我能够像这样创建一个 GKE 集群:
gcloud container clusters create mattscluster --zone us-west2 --machine-type e2-standard-2
也许我只是有点困惑,但基本上我正在尝试通过我自己的主机 (Mac) 终端而不是提供的 gcloud 使用 gcloud
cli 来建立我的工作流程互动 shell.
我正在通过 运行 向 IAM 成员进行身份验证:
gcloud auth login
它将我带到 Google 云登录页面,我已成功通过该页面进行身份验证,然后在我的 shell 中获得以下内容:
You are now logged in as [MY_EMAIL@gmail.com].
Your current project is [myproperty-1537056464248]. You can change this setting by running:
$ gcloud config set project PROJECT_ID
在此之后,我尝试发出以下命令:
gcloud container clusters create somename
我收到以下错误消息:
ERROR: (gcloud.container.clusters.create) ResponseError: code=400, message=Project "myproperty-1537056464248" has no network named "default".
我的 IAM 用户具有以下角色:
Kubernetes Engine Cluster Admin
Owner
我只想避免使用 gcloud interactive shell 这样我就可以:
- 通过命令行创建集群
- 将 docker 构建推送到 Google Container Registry
- 列出集群
- 创建pods
- 等...
但这些 IAM 政策并没有真正发挥我的预期作用。
我应该改用服务帐户吗?
您遇到了两个明显的错误:
- 第一条错误消息说您的项目缺少 'default' 网络。
您可以通过以下方式检查项目的网络:
$ gcloud compute networks list
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4
default AUTO REGIONAL
如果您创建一个全新的项目,它应该有一个 'default' 网络。
或者您可以指定现有网络:
gcloud container clusters create somename --network=put-existing-network-here
- 第二个错误是项目中缺少权限 'compute.networks.get'。
您可以使用'gcloud projects get-iam-policy PROJECT_ID'验证项目中的实际角色。为您的 IAM 用户查找角色 'owner',如下所示:
$ gcloud projects get-iam-policy PROJECT_ID
- members:
- user:username@somedomain.com
role: roles/owner
新项目应该带有一个名为 default
的网络,但我最终得到了一个根本没有任何网络的网络(这导致我看到了同样的错误)。
创建一个后...
gcloud compute networks create default
我能够像这样创建一个 GKE 集群:
gcloud container clusters create mattscluster --zone us-west2 --machine-type e2-standard-2