标签: google-cloud-platform

无法通过 ssh 连接到 GCE:“权限被拒绝(公钥)”

我通过 Google Compute Engine 中的 Bitnami 创建了一个 VM。以前,我可以通过 Bitnami Web 界面进行 ssh。我试图通过 Mac 上的终端 ssh,但一直收到Permission denied (publickey)错误消息。然后我删除了服务器和我的 Mac 上的所有密钥,并从 bitnami 下载了 pem 文件并使用-i了连接选项,但问题仍然存在。

ssh -i bitnami-gce.pem xxx@1xx.1xx.5x.1xx -v
Run Code Online (Sandbox Code Playgroud)

完整的调试信息:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 1xx.1xx.5x.1xx [1xx.1xx.5x.1xx] port 22.
debug1: Connection established.
debug1: identity file bitnami-gce.pem type -1
debug1: identity file bitnami-gce.pem-cert type -1
debug1: Enabling compatibility mode for protocol …
Run Code Online (Sandbox Code Playgroud)

debian ssh ssh-keys google-compute-engine google-cloud-platform

35
推荐指数
4
解决办法
8万
查看次数

由于公钥不可用,无法验证以下签名:NO_PUBKEY 6A030B21BA07F4FB

我的环境:

# uname -a
Linux app11 4.9.0-5-amd64 #1 SMP Debian 4.9.65-3+deb9u2 (2018-01-04) x86_64 GNU/Linux
# 
# cat /etc/*release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
# 
Run Code Online (Sandbox Code Playgroud)

在尝试运行时apt-get update,我收到了一堆错误:

# apt-get update
Ign:1 http://deb.debian.org/debian stretch InRelease
Hit:2 http://security.debian.org stretch/updates InRelease
Hit:3 http://deb.debian.org/debian stretch-updates InRelease             
Hit:4 http://deb.debian.org/debian stretch-backports InRelease           
Hit:5 http://deb.debian.org/debian stretch Release 
Get:6 http://packages.cloud.google.com/apt cloud-sdk-stretch InRelease [6,377 B]
Ign:7 https://artifacts.elastic.co/packages/6.x/apt stable InRelease
Hit:8 https://artifacts.elastic.co/packages/6.x/apt stable Release
Get:9 http://packages.cloud.google.com/apt google-compute-engine-stretch-stable InRelease [3,843 B]
Get:10 …
Run Code Online (Sandbox Code Playgroud)

debian google-compute-engine google-cloud-platform gcloud

35
推荐指数
3
解决办法
3万
查看次数

GKE 中出站连接的稳定公共 IP 或 IP 范围

我使用 Google Kubernetes Engine 按需运行 Pod。每个 pod 都使用 nodeport 服务公开暴露在互联网上。

我正在 GKE 中寻找一种方法来获取出站连接的单个 IP 或 IP 范围,将它们提供给第三方 API 以将它们列入白名单。

当节点自动缩放或升级它们时,GKE 节点 IP 是不可管理的。我需要一种方法来保持一致的出站 IP。

我曾尝试使用一个简单的 NAT 网关到 Kubernetes 节点(使用这里的示例),虽然这将出站连接路由到 NAT 网关,但它会中断到 Pod(Nodeport 服务)的入站流量,因为它们在NAT 网关。

  • 是否有谷歌云区域的默认 IP 范围,我可以将其提供给第三方以列入白名单(或)

  • 如果 GKE 提供了一种从静态 IP(或)预先保留的列表中选择节点外部 IP 的方法

  • 有没有其他方法可以实现拥有单个静态 IP 或代表来自 Pod 的出站流量的 IP 范围

我发现像类似的问题这样,但使用NAT时休息,他们并没有解决我的问题,因为豆荚应该是外部连接。

google-cloud-platform google-kubernetes-engine

30
推荐指数
1
解决办法
2万
查看次数

在没有负载均衡器的情况下在 Google Container Engine 上公开端口 80 和 443

目前我正在做一个小型的爱好项目,一旦它准备好,我就会开源。此服务在 Google Container Engine 上运行。我选择 GCE 是为了避免配置麻烦,成本可以承受并学习新东西。

我的 pod 运行良好,我创建了一个类型LoadBalancer的服务来在端口 80 和 443 上公开服务。这完美地工作。

但是,我发现对于每个LoadBalancer服务,都会创建一个新的 Google Compute Engine 负载均衡器。这个负载均衡器非常昂贵,并且对于单个实例上的业余项目来说真的做得太过分了。

为了降低成本,我正在寻找一种无需负载平衡器即可公开端口的方法。

到目前为止我尝试过的:

有没有办法在没有负载均衡器的情况下为 Google Container Engine 上的单个实例公开端口 80 和 443?

google-compute-engine kubernetes google-cloud-platform

28
推荐指数
1
解决办法
6902
查看次数

已超出 Google Cloud IN_USE_ADDRESSES 配额。

我花了过去 3 个小时寻找发布 Google Compute Engine API 使用中 IP 地址的方法,因为我使用了 8/8。我用谷歌搜索,阅读手册,但无法在控制台的任何地方发布它。我正在尝试设置一个 Rails 应用程序。编译时遇到错误,因为我没有为 DB 提供正确的套接字(这在这里并不重要)。当卡住时,我在终端中按 Ctrl+C 释放,我认为这是问题所在。- 我是 Google Cloud 的新手,因此我只能假设。

错误信息:

ERROR: (gcloud.app.deploy) Error Response: [400] The following quotas were exceeded: IN_USE_ADDRESSES (quota: 8, used: 8 + needed: 2).
https://appengine.googleapis.com/v1/apps/workepics/services/default/versions?alt=json
Run Code Online (Sandbox Code Playgroud)

这里在控制台中可视化: 在此处输入图片说明

当我在控制台中单击计算引擎时,只会询问我是否要创建一个。没有其他选择。

任何帮助,将不胜感激!谢谢你。

google-compute-engine google-cloud-platform

25
推荐指数
2
解决办法
2万
查看次数

如何确定将我的站点迁移到云解决方案是否具有成本效益?

我有一个大而繁忙的网站;它目前完全在我每个月租用约 700 美元的专用服务器上运行。

它包含三个部分,我认为我可以将其划分为云解决方案:

  • 媒体(图像/视频)文件托管。目前我有类似 236 GB 的静态图像,目前都只是停在我的服务器上。如果我将这些移动到云中,我可能会与 CDN 结合使用(以最小化每个图像请求从云服务传输数据的成本)。

  • 数据库。目前在我的服务器上运行 MySQL,大约有 3 GB 的数据。

  • 网络服务器。同一台服务器运行 nginx 服务静态文件和 PHP。

我现在没有任何生产问题,但我希望我的网站明年的流量/服务器负载翻一番。所以我现在想考虑可扩展性。

我的问题是:我如何确定将任何/所有这些移动到云平台上是否具有成本效益,而不是将它们保留在我当前的服务器上?

(我已经知道其他一些因素:使用云进行备份会更容易,我不会像现在使用单台服务器那样出现单点故障等。但我不知道有多少拆分其中一项服务的成本更多/更少。我该如何计算?)


编辑 - 谢谢大家这些惊人的答案和评论。一些人要求提供更多信息,因此我总结了以下所有内容并添加了更多数据:

已使用数据传输(“带宽”) - 该站点每月发送约 17 TB 的出站数据(!),我计划明年将这个数字增加一倍(!!)。几乎所有这些出站都是静态媒体(图片和视频剪辑),所以也许 CDN 是个好主意,不仅可以提高可发现性,而且可以将所有数据传输到 CDN 网络的负担转移到 CDN 网络,因此媒体存储服务器没有那么多的数据直接传输。--编辑:对于这么多数据传输来说,CDN 似乎非常昂贵。所以也许静态媒体留在一个简单的服务器上,这给了我一个非常高的带宽上限(你好 OVH!),如果我能找到一种经济有效的方法将 CDN 放在它前面,那就太棒了。

流量不尖- 我的流量相当稳定;我转向更基于云的解决方案的目标是能够轻松扩展。即我当前的设置在一个硬盘驱动器上包含所有内容,并且驱动器已满 60%;这个基础设施实际上无法处理双倍的数据量(而且我不确定它是否有足够的计算能力以双倍的流量运行 Web 服务器和数据库服务器)。

静态媒体- 正如我上面提到的,我有大约 236 GB 的静态媒体,主要是所有图像和视频剪辑。这似乎是最明显的(也许是最简单的?)首先切割并放入云中的部分。

数据库- 虽然数据库现在运行良好,但我很快就会有一些更复杂的查询,并且喜欢那里更强大的东西的想法。因此,虽然我不认为我当前的需求(功率和数据量)决定我应该将数据库服务器移到云中,但这一切都是为了能够扩展。

繁忙时间- 我的网站上总是有至少1,000 名用户 24/7,贪婪地消费媒体。服务器从不空闲。

目前专用服务器- 我之前说错了,说它是 colo(暗示我拥有硬件)。那是错误的。我有一个我每个月租用的专用服务器(由我的托管公司所有)。区别不大,只是想提一下。

cloud azure amazon-web-services google-cloud-platform

23
推荐指数
6
解决办法
3986
查看次数

在谷歌云 gsutil 中使用 JSON 密钥


我在一个key.json文件中有一个 ssh 私钥,我想使用此凭据通过 gsutil 访问存储桶。

我似乎找不到任何关于如何包含 json 密钥作为身份验证方法的信息,只有“私有”和“秘密”字段。

文件结构为:

{
  "private_key_id":
  "private_key": "-----BEGIN PRIVATE KEY-- ...
   "client_email":
   "client_id":
  "type": "service_account"
}
Run Code Online (Sandbox Code Playgroud)

我如何使用gsutil该文件?

google-cloud-storage google-cloud-platform gsutil

21
推荐指数
2
解决办法
2万
查看次数

错误“from itsdangerous import json as _json ImportError: 无法从 'itsdangerous' 导入名称 'json'”

在将Flask应用程序部署到Google Cloud Platform时,我收到此错误:

[ERROR] Exception in worker process from itsdangerous import json as _json ImportError: cannot import name 'json' from 'itsdangerous'

2022-02-18 08:00:30 default[20220218t132659]  Traceback (most recent call last):
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
  worker.init_process()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 92, in init_process
  super().init_process()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/base.py", line 134, in init_process
  self.load_wsgi()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
  self.wsgi = self.app.wsgi()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
  self.callable = self.load()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
  return self.load_wsgiapp() …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform

20
推荐指数
4
解决办法
2万
查看次数

如何在 Google Kubernetes Engine 中选择 Kubernetes 负载均衡器的外部 IP 地址

我正在使用 Google Kubernetes Engine 部署一个网络应用程序,我想通过负载均衡器在我作为 Google Cloud Platform 中同一项目的一部分控制的现有静态 IP 地址上访问它,因为我想使用域名已经指向这个IP。

我用于 pod 的 yaml 文件是:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: gcr.io/my-project/my-app:latest
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法设置负载平衡器:

apiVersion: v1
kind: Service
metadata:
  name: my-load-balancer
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: my-app
  type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)

这提供了一个可以访问应用程序的外部 IP,但我找不到任何方法来配置它以使用我想要的 IP。该服务的文件提到了spec.clusterIP设置,但这似乎并没有涉及到的外部IP。同样,一旦设置了负载均衡器,服务的 status.loadBalancer.ingress.ip 字段就会设置为其外部 IP 地址,但这似乎不是一个可配置的设置。

作为替代方案,我尝试在 Google Compute Engine 控制台中手动创建转发规则,将来自静态 IP 地址的流量定向到 Kubernetes 设置的目标池,但是当我尝试连接时,连接被拒绝。

有什么方法可以做我想做的事 - 在选定的静态 IP 地址上在 Google Kubernetes 引擎上公开 Kubernetes …

docker google-compute-engine kubernetes google-cloud-platform google-kubernetes-engine

18
推荐指数
2
解决办法
2万
查看次数

如何在服务器上将 GOOGLE_APPLICATION_CREDENTIALS 与 gcloud 一起使用?

gcloud在 GCE 之外以非交互方式使用命令行与服务帐户的最简单方法是什么?最好不要用凭证文件乱扔文件系统,这就是这样gcloud auth activate-service-account --key-file=...做的。

有许多使用gcloud服务帐户的用例。例如,在服务器上,我想GOOGLE_APPLICATION_CREDENTIALS在运行我的应用程序之前测试是否正确设置并具有所需的权限。或者,我想运行一些设置脚本或 cron 脚本来执行一些gcloud命令行检查。

Google Cloud 库(例如pythonjava)自动使用环境变量GOOGLE_APPLICATION_CREDENTIALS向 Google Cloud 进行身份验证。但不幸的是,这个命令行似乎对gcloud. gcloud在保持文件系统完好无损的同时使用干净的方法是什么?

$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:

  $ gcloud auth login

to obtain new credentials, or if you have already logged in with a
different account:

  $ gcloud config set account …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform gcloud

17
推荐指数
2
解决办法
3万
查看次数