使用其代码库:https://github.com/nmallya/gkedemoapp
您可以在此处的“首次部署”注释之间看到此部署是如何组合在一起的: https://github.com/nmallya/gkedemoapp/blob/master/gcloud_deployment.sh
我已经创建了 SSL 证书,Web 服务已启动且运行正常,但我无法按说明创建入口。入口的状态为“所有后端服务均处于不健康状态”。
入口的 YAML 如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gke-ingress
annotations:
kubernetes.io/ingress.class: "gce"
# kubernetes.io/ingress.allow-http: "false"
# ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
# This assumes tls-secret exists.
- secretName: gkecert
backend:
serviceName: web
servicePort: 443
我想我需要提供更多信息,但我不确定下一步该在哪里进行故障排除。
答案1
事实证明我的服务状态不佳。“READY”并不意味着它们在根路径 (/) 上响应 200。我曾经kubectl get pods
列出我的 pod,然后检查日志。
NAME READY STATUS RESTARTS AGE
cable-76bfb45bb-rkz8f 2/2 Running 0 24m
rails-67d569746d-54hs8 2/2 Running 0 24m
elasticsearch-0 1/1 Running 0 16m
redis-master-945b795f6-ldg5x 1/1 Running 0 14h
sidekiq-597c876bc4-zg24k 2/2 Running 0 24m
kubectl logs rails-67d569746d-54hs8 rails
然后我可以使用第二个rails
是 pod 内容器的名称来检查特定日志。您应该在那里看到健康检查的日志,它应该会指出哪里出了问题。
如果您只看到服务器启动而没有健康检查日志,则很可能是您的 pod 无法访问。请检查您的服务及其上的端口。只要它们可访问且在根路径上响应 200(而不是重定向),健康检查就应该通过,并且入口应该允许连接。