【发布时间】:2020-03-18 03:17:54
【问题描述】:
在我的本地开发设置中,我使用 Django 作为网络服务器 (a-la python manage.py runserver 8000),并且我能够 kubectl port-forward <django_pod> 8000 我的本地开发机器的流量,因此我可以通过浏览与我的网站进行交互到http://localhost:8000/testpage。我已将 ALLOWED_HOSTS 配置为包含 localhost 以启用此功能。
但是,我想避免使用 port-forward,而是采用更合适的方式通过 Kubernetes 入口控制器和服务运行我的流量。 在同一个 Minikube 集群上,我已将入口配置为将某些流量 url 指向一个非常基本的 nginx pod,以确认我的 ingress+service+pod 网络工作正常。所有其他 url 应路由到我的 Django 应用程序。唯一的区别是 nginx 流量都在 80 端口上。
在我的入口控制器日志中,我可以看到为我的 Django 应用程序发送到 k8s 服务的流量:
192.168.64.1 - [192.168.64.1] - - [22/Nov/2019:03:50:52 +0000] "GET /testpage HTTP/2.0" 502 565 "-" "browser" 24 0.002 [default-django-service-8000] [] 172.17.0.5:8000, 172.17.0.5:8000, 172.17.0.5:8000 0, 0, 0 0.000, 0.000, 0.000 502, 502, 502 aa2682896e4d7a2052617f7d12b1a02b
当我查看 Django 日志时,我没有看到任何流量。
我的入口servicePort 是8000,django-service 端口是8000(我只是让它默认为ClusterIP),pod 的spec.containers.ports.containerPort 是8000,并且进程有正如我之前提到的,已设置为侦听端口 8000。
当我检查kubectl get endpoints 时,它正确地向我显示了一个端点连接在端口 8000 上(当我重新启动它们时,它正确地更改为新 pod 的 IP)。
我使用以下指南尝试调试:
- https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/
- https://medium.com/@ManagedKube/kubernetes-troubleshooting-ingress-and-services-traffic-flows-547ea867b120
我的猜测是ALLOWED_HOSTS 可能有问题,但我在列表中添加了一个* 通配符,但它仍然无法正常工作。
我的设置有什么问题?
【问题讨论】:
-
你能发布你的入口 YAML 吗?另外你使用的是什么版本的 Minikube 和 kubernetes?
标签: django kubernetes-ingress minikube kubernetes-service