我正在Google Kubernetes引擎上运行一个集群,目前我正在尝试从使用具有外部负载平衡(和NodePort服务)的入口切换到使用具有容器本机负载平衡(和ClusterIP服务)的入口,遵循以下文档:容器本机负载平衡
为了与我的服务通信,我使用了以下入口配置,在使用NodePort服务而不是ClusterIP时,该配置可以正常工作:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: mw-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: mw-cluster-ip
networking.gke.io/managed-certificates: mw-certificate
kubernetes.io/ingress.allow-http: "false"
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: billing-frontend-service
servicePort: 80
- path: /auth/api/*
backend:
serviceName: auth-service
servicePort: 8083
现在,在文档之后,我不再使用readinessProbe作为容器部署的一部分作为健康检查,而是将ClusterIP服务与BackendConfig结合使用。对于每个部署,我都使用如下服务:
apiVersion: v1
kind: Service
metadata:
labels:
app: auth
name: auth-service
namespace: default
annotations:
cloud.google.com/backend-config: '{"default": "auth-hc-config"}'
spec:
type: ClusterIP
selector:
app: auth
ports:
- port: 8083
protocol: TCP
targetPort: 8083
和后端配置:
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: auth-hc-config
spec:
healthCheck:
checkIntervalSec: 10
port: 8083
type: http
requestPath: /auth/health
作为参考,这是readinessProbe以前的样子:
readinessProbe:
failureThreshold: 3
httpGet:
path: /auth/health
port: 8083
scheme: HTTP
periodSeconds: 10
现在来看实际问题。我首先部署了容器和服务,它们似乎启动得很好。然而,入口似乎没有正确地进行健康检查,并在云控制台中显示这一点:
Error during sync: error running backend syncing routine: error ensuring health check: googleapi: Error 400: Invalid value for field 'resource.httpHealthCheck': ''. HTTP healthCheck missing., invalid
集群和节点池正在运行GKE版本1.17.6-gke.11,因此不需要注释cloud.google.com/neg:'{"ingress": true}'
。我已经检查过并且服务注释正确:
Annotations: cloud.google.com/backend-config: {"default": "auth-hc-config"}
cloud.google.com/neg: {"ingress":true}
cloud.google.com/neg-status: {"network_endpoint_groups":{"8083":"k8s1-2078beeb-default-auth-service-8083-16a14039"},"zones":["europe-west3-b"]}
我发现了我的问题。显然BackendConfig的type
属性区分大小写。一旦我将其从超文本传输协议
更改为HTTP
,它在我重新创建入口后就工作了。
我有一个ECS集群,它有多个节点(任务定义),由应用程序负载平衡器前置。在负载平衡器和容器级别(在任务定义内)配置健康检查有意义吗? 负载平衡器对每个注册的目标运行配置的健康检查,以便注销故障节点。在容器级别设置健康检查可以完成相同的事情:ECS将注销任何未通过健康检查的容器(根据您的配置)。ECS将始终实例化更多任务定义实例,以满足您所需的计数。 对我来说,如果任务定义只有一个容器,那么只在负载
我在GCP中建立了自己的Elasticsearch集群。群集已启动并运行良好。 集群包含两个客户端节点,我可以使用它们在内部访问并通过运行状况检查http://IP:9200/和
Google容器引擎(kubernetes) 使用我的Web服务器应用程序(Torando/python)部署/pod kubernetes中Web服务器服务的入口-它在GCP中创建了负载均衡器 负载均衡器中的后端服务,后端是Web服务器 指向后端服务器的前端 将自定义域和子域引导到相关后端的主机和路径规则 防火墙规则设置为由入口创建 当我创建上述所有内容时,我使用正确的端口和所有内容创建了一个新
根据以下官方文件,我在GKE上安装了Kubernetes入口控制器。 入口控制器运行良好。 它自动创建TCP负载平衡器、健康检查和防火墙规则。我的kubernetes群集有3个节点。有趣的是,有两次健康检查失败。它传递给入口控制器正在运行的实例。我调试了它,但没有找到任何线索。谁能帮我一下吗。
我们已经在Google Cloud中设置了Wordpress(如果有关系,请在Google Container Engnine中设置库伯内特斯)并配置了HTTP负载均衡器。作为执行此操作的一部分,我们设置了一个健康检查,配置如下: 但奇怪的是,当我跟踪Wordpress实例的日志时,它看起来像这样: 也就是说,看起来健康检查每隔一秒发送一次(甚至更多?)。为什么会这样?
我试图在谷歌云上设置网络负载均衡器,但健康检查总是返回不健康的结果。 我给你我遵循的步骤 > 我创建了两个windows Server 2012 R2实例 我检查了端口80在这两个实例上是否对公众开放 我创建了转发规则,谷歌云给了我一个外部IP 我在两个服务器实例的网络环回接口中设置了外部IP 我创建了一个网络路由,用于转发两个实例上的流量(路由菜单) 我为169.254.169.254/32(网