【问题标题】:Why does my django web application not load for my graphs that I have on kubernetes?为什么我的 django Web 应用程序无法加载我在 kubernetes 上的图表?
【发布时间】:2021-12-16 09:07:12
【问题描述】:

我有一个 Django Web 应用程序,它可以使用机器学习库 Sktime 和 plotly 图形库来显示预测图。它在我的本地机器上运行良好。但是,当我在 Kubernetes 上运行它时,它不会加载。网页只是永远加载。我尝试通过将 CPU 和内存分别增加到 2000m 和 1000mi 来更改我的 yaml 资源文件。不幸的是,这并不能解决问题。现在我运行我的应用程序的方式是使用 minikube 命令:minikube service --url mywebsite。我不知道它是否是启动我的应用程序的正确方法。有人知道吗?

服务 + 部署 YAML:

apiVersion: v1
kind: Service
metadata:
  name: mywebsite
spec:
  type: LoadBalancer
  selector:
    app: mywebsite
  ports:
  - protocol: TCP
    name: http
    port: 8743
    targetPort: 8000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mywebsite
spec:
  selector:
    matchLabels:
      app: mywebsite
  template:
    metadata:
      labels:
        app: mywebsite
    spec:
      containers:
      - name: mywebsite
        image: mywebsite
        imagePullPolicy: Never
        ports:
        - containerPort: 8000
        resources:
          requests:
            cpu: 200m
            memory: 100Mi
          limits:
            memory: "1Gi"
            cpu: "200m"

【问题讨论】:

  • 您是否在容器化平台(而不是 Kubernetes)(例如 Docker)中测试了您的容器镜像?它工作正常吗?你试过minikube tunnel command吗?您的服务和部署是否正在运行? (kubect get services 和 kubectl get deploy)?您使用的是哪个操作系统 - Linux、Mac、Windows?您能否分享您的图片或发布具有相同问题的图片链接以便您的problem will be reproducible?

标签: django kubernetes graph web-applications yaml


【解决方案1】:

由于没有提供更多详细信息/日志,因此已发布带有通用解决方案的答案。


根据official minikube documentation for accessing apps minikube 支持 NodePort 和 LoadBalancer 服务:

Kubernetes 中有两大类服务:NodePort 和 LoadBalancer

要访问 NodePort 服务,您应该使用 minikube service --url <service-name> 命令 - check this。

要访问 LoadBalancer 服务,您应该使用 minikube tunnel 命令 - check this。

As LoadBalancer type is also exposing NodePort,它应该与您尝试的minikube service 命令一起使用。我安装了一个带有 Docker 驱动程序的 minikube。我创建了一个示例部署,然后为此部署创建了一个示例 LoadBalancer 服务。之后我运行minikube service --url <my-service> - 在输出中,我得到的地址如下:

http://192.168.49.2:30711

30711 是一个节点端口。当我尝试访问此地址时,它工作正常。

为什么它不适合你?一些可能的原因:

  • 您没有使用 Linux - 在其他操作系统上,Minikube 有一些限制 - i.e check this answer for Mac。这也取决于您使用的是哪个minikube driver。
  • 您的 pod 没有运行 - 您可以使用 kubectl get pods 命令检查这一点
  • 您在定义中指定了错误的端口
  • 您的图片有问题

还可以查看 minikube 网站上的"Troubleshooting" section。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多