GKE新手咨询:如何理解Google Cloud LoadBalancer的配置规则说明?
GKE LoadBalancer 配置规则说明
在Google Kubernetes Engine(GKE)里,LoadBalancer类型服务的特性参数,无法通过gcloud命令行工具或Google Cloud控制台直接手动修改,所有相关配置调整必须借助Kubernetes的BackendConfig或FrontendConfig这两个自定义资源来完成。
背后的逻辑
GKE的LoadBalancer本质是K8s Service与Google Cloud负载均衡器的绑定体,GKE内置的控制器会负责维护K8s资源定义与云侧负载均衡器配置的一致性。如果绕过K8s,直接通过gcloud或控制台修改云侧负载均衡器的设置,GKE控制器会自动将配置回滚到K8s资源中定义的状态,导致你的手动修改完全失效。
两个核心资源的作用
- BackendConfig:负责配置负载均衡器的后端相关特性,常见场景包括:
- 自定义健康检查的路径、端口、间隔时间
- 开启会话保持(会话亲和性)
- 设置连接池大小与超时
- 启用Cloud CDN加速或Cloud Armor安全防护
- FrontendConfig:负责配置负载均衡器的前端相关特性,常见场景包括:
- 绑定自定义SSL证书实现HTTPS访问
- 保留客户端真实IP地址
- 配置HTTP到HTTPS的自动重定向
- 调整客户端会话超时时间
简单示例
比如要给LoadBalancer服务配置自定义健康检查,正确的做法是先创建BackendConfig资源,再通过注解关联到对应的K8s Service:
# 定义BackendConfig apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: app-backend-config spec: healthCheck: checkIntervalSec: 10 port: 8080 requestPath: /health --- # 关联BackendConfig的LoadBalancer Service apiVersion: v1 kind: Service metadata: name: app-lb-service annotations: cloud.google.com/backend-config: '{"default": "app-backend-config"}' spec: type: LoadBalancer selector: app: my-web-app ports: - protocol: TCP port: 80 targetPort: 8080
提交这些配置后,GKE会自动同步云侧负载均衡器的健康检查参数,确保K8s定义与实际运行的负载均衡器配置一致。
内容的提问来源于stack exchange,提问作者ravishankar
相关产品推荐
相关产品推荐

