目的:使用 HTTP(S) 负载均衡器 (HLB) 访问驻留在 kubernetes (k8s) 命名空间中的应用程序
方法
TCP 负载平衡 (TLB)(第 4 层)
- 已在 Google Cloud Platform (GCP) 上创建 k8s 集群
- 已创建静态 IP
- 已创建 TLB、分配静态 IP 并更新 DNS
- 导航到 some.domain.com 显示已在“some”命名空间中部署的应用程序
- another.domain.com 显示在“another”命名空间内运行的应用程序
- 当部署了其他命名空间时,例如,something-else,然后转到 something-else.domain.com 也会从该命名空间返回应用程序。
HTTP(S) 负载平衡(第 7 层)
- 假设是可以以相同的方式访问应用程序,即只需用第 7 层 TLB 替换 TLB。
- 遵循官方 GCP 之一,配置后端,保留默认路径,并在前端部分配置证书
- DNS 已更新
- 五分钟后,访问 some.domain.com 时返回 HTTP 502
- 入口 nginx 日志 POD 日志被跟踪,但在刷新 some.domain.com 时没有添加其他日志记录
- GCP 日志显示存在“后端错误”
- 负载均衡器的健康检查最初运行不佳,当添加 10256 HTTP 检查后,服务变为绿色
- 当导航到某些命名空间时,会显示以下错误:
错误:服务器错误
服务器遇到临时错误,无法完成您的请求。
请于 30 秒后重试。
讨论
- 尽管添加了相同的健康检查(即用于 TLB 的健康检查)并将 HLB 变为绿色,但这可能是误报。
- 根据此问答,该问题是由不健康的服务引起的,但添加了 TCP 检查 10256,使服务变为绿色,然后问题仍然存在。是否应该添加另一项检查?
- 认为 TLB 也能以同样的方式工作的假设看起来是错误的。根据 GCP 日志,HLB 甚至无法将流量路由到命名空间。
子问题
- 应该配置什么健康检查来检查HLB?
- HLB的路由与TLB有何不同?
答案1
请查看以下 GCP 文档: