标签: google-kubernetes-engine

Google 健康检查日志在哪里

我正在运行一个 GCE 实例,并在其上运行了一个 Kubernetes 集群。还配置了 HTTP 负载均衡器来探测在此实例上运行的 Kubernetes 服务的运行状况。但我不断收到此错误:

Error: Server Error

The server encountered a temporary error and could not complete your request. Please try again in 30 seconds.
Run Code Online (Sandbox Code Playgroud)

所以我想知道与负载均衡器相关的健康检查是否正确运行/配置。

我在哪里可以找到或如何启用此类健康检查器的日志文件?

该实例正在运行 Debian。

log-files healthcheck google-compute-engine google-cloud-platform google-kubernetes-engine

9
推荐指数
1
解决办法
4283
查看次数

创建 GCE 负载均衡器时出错:请求的地址 ip 既不是静态的也不是分配给 LB

我有一种情况,Kubernetes 显然无法再为kubectl create -f Deployment.yaml. kubectl describe service <my-service>报告以下错误

CreatingLoadBalancerFailed    
Error creating load balancer (will retry): Failed to create load balancer 
for service default/<my-service>: requested ip <my-address> is 
neither static nor assigned to LB <id>(default/<my-service>): <nil>
Run Code Online (Sandbox Code Playgroud)

gcloud compute addresses list表示my-address是静态IP地址:

NAME          REGION        ADDRESS       STATUS
<my-address>  europe-west1  <ip-address>  RESERVED
Run Code Online (Sandbox Code Playgroud)

Deployment.yaml包含<my-service>分配<my-address>给负载均衡器的规范:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: my-app
ports:
  - protocol: UDP
    port: …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine kubernetes google-kubernetes-engine

9
推荐指数
2
解决办法
4061
查看次数

Pod 不断重启并处于 CrashLoopBackOff 状态

我们的其中一个 Pod 无法启动,并且会不断重启并且处于 CrashLoopBackOff 状态:

姓名准备状态重新开始年龄

quasar-api-staging-14c385ccaff2519688add0c2cb0144b2-3r7v4   0/1      
CrashLoopBackOff   72         5h
Run Code Online (Sandbox Code Playgroud)

描述 pod 看起来像这样(只是事件):

来自 SubobjectPath 原因消息的 FirstSeen LastSeen 计数

  57m       57m     1   {kubelet gke-skywatch-cf86c224-node-21bm}   spec.containers{quasar-api-staging} Created Created with docker id 7515ced7f49c
  57m       57m     1   {kubelet gke-skywatch-cf86c224-node-21bm}   spec.containers{quasar-api-staging} Started Started with docker id 7515ced7f49c
  52m       52m     1   {kubelet gke-skywatch-cf86c224-node-21bm}   spec.containers{quasar-api-staging} Created Created with docker id 2efe8885ad49
  52m       52m     1   {kubelet gke-skywatch-cf86c224-node-21bm}   spec.containers{quasar-api-staging} Started Started with docker id 2efe8885ad49
  46m       46m     1   {kubelet gke-skywatch-cf86c224-node-21bm}   spec.containers{quasar-api-staging} Created Created with docker id a4361ebc3c06 …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine

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

我可以将 Google 云存储桶挂载到 Pod 作为永久性磁盘。如果是如何?

我有一个 gke 集群,节点位于 3 个不同的区域但位于同一区域。我想对我的 Pod 使用永久性磁盘。但是 pod 是在所有 3 个区域中随机创建的。如何使用 gcePD(所有节点通用)。或者我可以在 pod 部署 (Yaml) 文件中添加存储桶吗?如果它是 podssible .请建议我怎么做?

google-cloud-storage google-cloud-platform google-kubernetes-engine

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

可以将主机别名分配给 Kubernetes 中的部署吗?如果是这样,如何?

这篇文章描述了如何在 kubernetes 中为 pod 分配主机别名,无论如何都可以为部署而不是为 pod 那样做?

在 kubernetes 中添加主机条目以提供主机名解析的第一行(在检查像 8.8.8.8 这样的服务器之前)的任何其他建议也将作为答案受到欢迎。

hosts internal-dns kubernetes google-kubernetes-engine

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

如何让 Google Cloud Load Balancer 尊重收到的 X-Forwarded-Proto?

我的应用程序结构使用 GKE 和 CloudFlare。它看起来像这样:

CloudFlare -> GKE -> Ingress -> My app running nginx

我在 CloudFlare 中使用了灵活的 SSL,所以只有用户和 CloudFlare 之间的连接使用 HTTPS,其余的都使用 HTTP。我知道的CloudFlare设置X-Forwarded-Protohttps在这种情况下,但是当我看到我的nginx的应用程序正在接收头,它得到X-Forwarded-Proto: http

我很确定这发生在 GKE 的负载均衡器和 Ingress 之间,因为我可以看到CF-Visitor: {"scheme": "https"}CloudFlare 配置的标头设置为 HTTPS。我的理解是,这意味着 CloudFlare 确实设置X-Forwarded-Protohttps,但在此过程中它被覆盖了。

不幸的是,我无法从 GKE 负载均衡器获取标头日志(似乎他们根本不记录X-Forwarded-*标头),所以我无法 100% 确认 CloudFlare 实际上正在设置标头,但我会如果不是,那就太惊讶了。

如果这是真的,Google Cloud 将X-Forwarded-Proto使用http. 我怎样才能避免这样做?

编辑:我在https://cloud.google.com/community/tutorials/nginx-ingress-gke 之后配置了 nginx 入口而不是 gce ,并且X-Forwarded-Proto设置https为预期。这是另一个信号,表明它gce是覆盖X-Forwarded-Proto标头的入口控制器。

cloudflare google-cloud-platform google-kubernetes-engine

7
推荐指数
1
解决办法
2231
查看次数

为什么 Pod 无法连接到另一个网络?(在新版Kubernetes中)

我在 GCP 中有两个项目:

  1. 使用 Kubernetes 节点 v1.8.8-gke.0。以及 Kubernetes 之外但在默认网络中的数据库。所有 pod 都可以连接到此服务器和所有端口
  2. 使用 Kubernetes Nodes v1.9.7-gke.3 和 Kubernetes 之外但在默认网络中的数据库。没有 Pod 可以连接到此服务器。跟踪路由测试失败。

为什么这个 Pod 无法连接?想法?

谢谢。

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

7
推荐指数
1
解决办法
5243
查看次数

Google Kubernetes Engine 节点池不会从 0 个节点自动扩展

我正在尝试在 GKE 上运行机器学习作业,并且需要使用 GPU。

我使用 Tesla K80 创建了一个节点池,如本演练中所述

我将最小节点大小设置为 0,并希望自动缩放器会根据我的工作自动确定我需要多少个节点:

gcloud container node-pools create [POOL_NAME] \
--accelerator type=nvidia-tesla-k80,count=1 --zone [COMPUTE_ZONE] \
--cluster [CLUSTER_NAME] --num-nodes 3 --min-nodes 0 --max-nodes 5 \
--enable-autoscaling
Run Code Online (Sandbox Code Playgroud)

最初,没有需要 GPU 的作业,因此集群自动缩放器正确地将节点池缩小到 0。

但是,当我使用以下规范创建作业时

resources:
  requests:
    nvidia.com/gpu: "1"
  limits:
    nvidia.com/gpu: "1"
Run Code Online (Sandbox Code Playgroud)

这是完整的作业配置。(请注意,此配置是部分自动生成的。我还删除了一些与问题无关的环境变量)。

Insufficient nvidia.com/gpu我手动将节点池增加到至少 1 个节点之前,Pod一直处于挂起状态。

这是 GPU 节点池的当前限制,还是我忽略了什么?

graphics-processing-unit kubernetes google-kubernetes-engine nvidia

7
推荐指数
1
解决办法
3325
查看次数

其他工作的 kubernetes 入口/服务上的 ERR_SSL_PROTOCOL_ERROR

我有一个基本的 nginx 部署和一个由 let's 通过 cert-manager 加密颁发的现有证书。我以为一切都已准备就绪,可以开始使用证书,但我无法连接 https。

连接到 LoadBalancer IP 和域可以正常工作。使用 https 连接域无法连接。Chrome 这么说ERR_SSL_PROTOCOL_ERROR,Firefox 这么说SSL_ERROR_RX_RECORD_TOO_LONG,SSL Labs 这么说Assessment failed: No secure protocols supported。都是同一个问题。

这是服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: example
  labels:
    app: example
spec:
  type: LoadBalancer
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
  - name: https
    protocol: TCP
    port: 443
    targetPort: 80
  selector:
    app: example
Run Code Online (Sandbox Code Playgroud)

这是入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx
  namespace: example
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-production …
Run Code Online (Sandbox Code Playgroud)

ssl kubernetes google-kubernetes-engine ingress

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

GKE 节点建议的磁盘大小?

当我在 GKE 中创建新节点池时,磁盘大小默认为 100GB。然而,当我通过 SSH 连接到已运行一段时间的节点时,运行后df -h仅使用了 32GB。(我其实不知道这32GB是从哪里来的)

节点真的需要 100GB 磁盘空间吗?例如,我可以仅使用 10GB 来运行它们吗?首先,我认为 Pod 会耗尽卷的空间,但在 GKE 上,Pod 提供自己的附加持久磁盘,并且不会添加到节点的磁盘空间,所以我很困惑为什么需要这么大的卷对于节点本身?

kubernetes google-kubernetes-engine

6
推荐指数
2
解决办法
7006
查看次数