我尝试使用 gcsfuse 将应用程序源代码存储在 GCP 存储桶上,这是我的 Dockerfile:
ARG VERSION
FROM golang:1.12.5-alpine3.9 as gcsfuse-builder
ENV GOPATH /go
RUN apk --update add git=2.20.1-r0 fuse=2.9.8-r2 fuse-dev=2.9.8-r2 \
&& go get -u github.com/googlecloudplatform/gcsfuse
FROM php:$VERSION as base
ARG REVISION
ENV APP_DIR=/srv/app \
APP_ENV=prod \
APP_FRONT_CONTROLLER=index.php \
APP_LOCALE=fr \
APP_USER=test-user \
APP_USER_GROUP=test \
APP_PORT=8080 \
COMPOSER_ALLOW_SUPERUSER=1 \
NGINX_DIR=/etc/nginx \
NGINX_VERSION=1.14.2-r1 \
PHP_FPM_CONF_DIR=/usr/local/etc/php-fpm.d/ \
SUPERVISORD_CONF_DIR=/etc/supervisor \
SUPERVISOR_VERSION=3.3.4-r1 \
BUILD_SCRIPTS_DIR=/build-scripts \
GOOGLE_APPLICATION_CREDENTIALS=/srv/app/bucket.json
# Supervisord conf to be copied at the end.
COPY docker/prod/php/scripts/*.sh $BUILD_SCRIPTS_DIR/
# Core dependencies installation …Run Code Online (Sandbox Code Playgroud) 我们的 GCP 组织一团糟。我想将项目整理到文件夹中,并删除“废弃”的项目。如何找出给定 GCP 项目的创建者?
由于奇怪的历史原因,我们在 GCS 存储桶中存储了 2.14Tb 的数据,用于存储 Google 容器注册表 (GCR) 的 docker 镜像。
我们曾经gcloud container images delete <image>删除了数千个未使用的图像,但是 stackdriver 表示底层 GCS 存储桶中存储的总字节数没有变化。
看起来gcloud container images delete已经从注册表中删除了图像元数据,但没有删除底层。
有没有一种方法可以从 GCS 中垃圾收集未使用的数据并减少每月的费用?
这是我们的 GCS 存储桶中对象总大小的图表 - 看起来对象大约每 24 小时被垃圾收集一次(在我们的例子中大约是 UTC 中午)
当我尝试访问元数据服务器时出现Could not resolve host metadata.google.internal错误。Could not resolve host metadata
虽然我使用自己的 VPC 和自定义防火墙,但我不认为这是防火墙的问题,因为根据 Google 元数据服务器流量永远不会离开实例。此外,我的主机文件中有一个条目证明了这一点:
# Google Compute Engine metadata server
169.254.169.254 metadata.google.internal metadata
我尝试 ping 169.254.169.254,但它返回General Failure(但是,它证明什么都没有......我不确定元数据服务器是否允许 ICMP)。
我的 Stackdriver Logging Agent 也因此失败。这是其日志中的一行:
Failed to access metadata service: error_class=Errno::ENETUNREACH error="Failed to open TCP connection to 169.254.169.254:80 (A socket operation was attempted to an unreachable network. - connect(2) for \"169.254.169.254\" port 80)"
如果重要的话,我的 VPC 网络中的内部流量仅限于icmp和tcp:22(ssh)。
发生了什么以及如何解决这个问题?
我有一个 VPC 网络设置,其中有一个连接到本地网络的 VPN。云路由器用于在内部以及与 VPN 网络之间创建路由 (BGP)。其中一个项目是托管具有内部和外部 IP(具有别名 IP 范围)的公共 Kubernetes 集群。它被配置为 VPC 网络的一部分(使用其子网之一)。
我正在尝试将 Kubernetes 上运行的服务连接到内部网络中的资源(通过 Cloud VPN)。不幸的是,这似乎不可能。连接超时。
Cloud VPN、Cloud Router 设置正确,网络之间存在访问/通信。唯一的问题是,我无法从 Kubernetes 容器访问本地资源
注销 Google Cloud似乎应该很容易。如果我运行:
$ unset GOOGLE_APPLICATION_CREDENTIALS
$ gcloud auth revoke --all
Revoked credentials:
- [my account]
$ gcloud auth list
No credentialed accounts.
To login, run:
$ gcloud auth login `ACCOUNT`
Run Code Online (Sandbox Code Playgroud)
乍一看我好像完全退出了gcloud。但是看看当我打开 Python shell 时会发生什么:
>>> from google.cloud import secretmanager_v1beta1 as secretmanager
>>> client = secretmanager.SecretManagerServiceClient()
/Users/my/path/.venv/lib/python3.7/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues …Run Code Online (Sandbox Code Playgroud) 
当我启动在 Google Cloud Platform 中创建的远程桌面时遇到问题。我有一个黑屏和一个命令行。我\xe2\x80\x99什么都做不了。问题是什么?我应该做什么?
\n当我查看项目的控制台 IAM 仪表板时,我可以看到我的 Cloud Build Service 帐户的行项目:
https://console.cloud.google.com/iam-admin/iam
Member Role
PROJECT_ID@cloudbuild.gserviceaccount.com Cloud Build Service Account
Run Code Online (Sandbox Code Playgroud)
但是当我使用命令列出服务帐户时,gcloud服务帐户不会显示:
$ gcloud iam service-accounts list --project=$PROJECT
Listed 0 items.
Run Code Online (Sandbox Code Playgroud)
为什么会PROJECT_ID@cloudbuild.gserviceaccount.com出现服务帐户?
我对云平台基础设施还很陌生。为了讨论简单起见,假设我讨论的唯一两个平台是 AWS 和 Google Cloud。
现在假设我有一个 HTTP 服务器,主要通过在线游戏的开放 API 处理 HTTP 响应。假设平均响应大小为 10KB,每天将发送大约一百万个响应。
根据我的理解,每月的价格取决于以 GB 为单位传输的数据量。现在我的问题是,如果有人编写一个脚本不断从我的服务器反复获取响应,那么价格就会飞涨。
我确信任何好的服务器都会避免这个问题,但我不确定到底是如何避免这个问题的。根据我的观察,许多现实生活中的大型在线游戏 API 服务器在响应大小仅为几 KB 时并没有优化其响应大小。一定会发生某种“每月固定付款或根据每秒传输的数据量付款”的情况,而不取决于传输的数据量。
然而,我只是在平台网站上找不到此类选项的任何参考。
任何帮助,将不胜感激。