Kubernetes Ingress 服务无法加载静态文件

标签 kubernetes kubectl minikube

我在 minikube (1.8.0) 上为一些服务创建了入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gateway-ingress
  namespace: kube-system
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: api-service
          servicePort: 80
        path: /api
      paths:
      - backend:
          serviceName: kubernetes-dashboard
          servicePort: 80
        path: /ui

当我访问 MINIKUBE_IP/ui 时,dashboard 的静态文件不起作用。以下是错误:
192.168.99.100/:1 GET https://192.168.99.100/ui/static/vendor.4f4b705f.css net::ERR_ABORTED
192.168.99.100/:5 GET https://192.168.99.100/ui/static/app.8a6b8127.js net::ERR_ABORTED
VM1524:1 GET https://192.168.99.100/ui/api/v1/thirdpartyresource 404 ()
...

请帮我解决这个错误,谢谢。

最佳答案

我遇到过同样的问题。
您可以通过在 Ingress 资源中定义新路径来解决它。

 rules:
  - http:
      paths:
      - path: /ui
        backend:
          serviceName: kubernetes-dashboard
          servicePort: 80
      - path: /*
        backend:
          serviceName: kubernetes-dashboard
          servicePort: 80

“/*”将允许您访问静态文件。

其他资源:
  • https://github.com/kubernetes/ingress-nginx/issues/333
  • https://github.com/kubernetes/contrib/issues/2238
  • 关于Kubernetes Ingress 服务无法加载静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48394686/

    相关文章:

    docker - Kubernetes:无法 curl minikube pod

    kubernetes - 每当Kubernetes由于使用资源而杀死进程时,如何记录日志?

    go - k8s NewListWatchFromClient 与 NewSimpleClientset 崩溃

    azure - 如何拥有多个 kubernetes 配置并在它们之间快速更改

    kubernetes - minikube ip 无法访问

    macos - Mac 上 Minikube 中 ExternalName 的 DNS 解析

    azure - Kubernetes - 服务类型 LoadBalancer 每次部署在 AKS 中时使用特定的 IP 地址

    kubernetes - Phoenix channel 的套接字在分布式集群环境中不断关闭

    kubernetes - 未找到 terraform kubectl 提供程序

    docker - 127.0.0.1 :5000: getsockopt: connection refused in Minikube