【问题标题】:Blazor server through k8s ingress controller通过 k8s 入口控制器的 Blazor 服务器
【发布时间】:2021-03-15 10:16:31
【问题描述】:

我编写了一个小型 Blazor 应用程序,它在容器化和通过 k3s 端口转发访问时看起来运行良好,但很难找到关于该应用程序需要如何正确通过以下方式公开的指南入口控制器。要显示这一点:

  • 如果我运行 Blazor 应用程序并通过端口转发进行访问(blazor 路由运行良好等):

kubectl 端口转发部署/8000:80

页面路由按预期工作

  • 但是,当我将 clusterIP 服务添加到部署并通过 Traefik 入口控制器连接到它时,我得到:

更改路由会出现404 page not found错误

我的 Ingress serviceIp 和 ingress 控制器设置:

  • 集群IP:
apiVersion: v1
kind: Service
metadata:
  name: driverpassthrough
spec:
  selector:
    app: driverpassthrough
  ports:
  - name: ui
    protocol: TCP
    port: 8010
    targetPort: 80
  • 入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-test
  annotations:
    kubernetes.io/ingress.class: "traefik"
    traefik.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
        - path: /passthrough
          backend:
            serviceName: driverpassthrough
            servicePort: 8010

【问题讨论】:

  • 我可以知道您是否安装了traefik ingress controller 本身,而不仅仅是 Ingress 对象?如果是这样 - 你到底是怎么做到的 - 掌舵,守护进程?
  • k3s 会自动运行 traefik 服务,因此我只是使用该服务并为其定义入口控制器配置(yaml 清单)

标签: kubernetes kubernetes-ingress traefik-ingress


【解决方案1】:

所以就我而言,我使用 k3s 和 traefik。我也有我的 blazor 服务器应用程序的 3 个副本。为了使它工作,我必须在集群 ip 上启用粘性会话(在注释中),如下所示:

服务
apiVersion: v1
kind: Service
metadata:
  name: qscale-healthcheck-service
  annotations:
    traefik.ingress.kubernetes.io/affinity: "true"
  labels:
    name: qscale-healthcheck-service
spec:
  type: ClusterIP
  selector:
    app: healthcheck
  ports:
    - name: http
      port: 80
      targetPort: 80
入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: traefik-ingress
  annotations:
    kubernetes.io/ingress.class: "traefik"
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: qscale-healthcheck-service
          servicePort: 80

这是我找到注释的链接:Traefik Doc

【讨论】:

  • 感谢@Max_Thom 的建议。尝试了 clusterIP 上的注释,但仍然存在 UI 引导问题。但是会阅读更多关于粘性会话的内容,以了解它的相关性以及为什么需要使用(可能除了其他设置之外)
  • 你可以尝试用重写目标 /$1 而不是 /
  • 也没有用。仍然有无引导页面显示“加载前不再响应”反馈错误。我有点搁置这个问题,因为此时我似乎必须做更多的 Traefik / ingress 理解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多