我之前为各种部署、服务和入口创建的 yaml 文件已经创建了工作设置。我尝试修复入口的一个小问题,但无法恢复到工作状态。
我的 Pod 启动时没有错误,服务也正常运行。日志中没有健康检查条目,因此问题似乎在于如何通过名称联系服务。当创建入口时,我在 GKE 界面中看到此事件(使用 kubectl describe 时看不到):
Error during sync: error while evaluating the ingress spec: could not find service "default/web";
服务确实已启动:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP None <none> 9200/TCP,9300/TCP 5h
kubernetes ClusterIP 10.31.x.x <none> 443/TCP 5h
redis-master ClusterIP 10.31.x.x <none> 6379/TCP 5h
web NodePort 10.31.x.x <none> 80:30110/TCP,443:31404/TCP 5h
websocket NodePort 10.31.x.x <none> 28080:30186/TCP 5h
我尝试过重启服务并改用 nginx ingress。我唯一剩下的想法就是销毁集群。就好像 k8s 内部 DNS 坏了一样。
答案1
对于运行 Rails 应用的 Web 服务,我将端口 80 和 443 都指向 3000。我force_ssl
在 Rails 配置中启用了此功能。我原以为这只会将 http 请求重定向到 https,但结果却重置了您正在使用的端口。如果要启用 force_ssl,则需要指定端口:
https://github.com/rails/rails/issues/19820
由于端口 3000 不再响应 200,因此该服务被标记为不健康,尽管其他方面没有任何问题。