我有一个 microk8s v1.28.14 集群,我想使用 kubernetes-dashboard。

我通过启用了仪表板microk8s enable dashboard,仪表板 pod 和服务在“kube-system”命名空间中创建,curl -k https://10.152.183.43服务正常运行。

现在我希望能够从外部访问我的仪表板。使用 cloudflare 为我的域提供 HTTPS 重定向和灵活的 TLS 设置。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  rules:
  - host: cluster.my-domain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

入口本身看起来不错:

Name:             kubernetes-dashboard
Labels:           <none>
Namespace:        kube-system
Address:          127.0.0.1
Ingress Class:    public
Default backend:  <default>
Rules:
  Host                Path  Backends
  ----                ----  --------
  cluster.my-domain.com
                      /   kubernetes-dashboard:443 (10.1.206.212:8443)
Annotations:          <none>
Events:               <none>

当现在尝试访问我的仪表板(“curl -k https://cluster.my-domain.com”)时,我收到以下错误:

Client sent an HTTP request to an HTTPS server

有什么办法可以解决这个问题吗?


最佳答案
1

根据这个问题

您遇到的错误是由于入口控制器和服务路由不匹配造成的。

默认情况下, 命令在端口 80 上公开仪表板服务。您需要将其配置为使用 HTTPS。

一旦仪表板服务在 HTTPS 上公开。确保 CloudFlare 设置处处都有 HTTPS。如果您请验证证书验证是否设置为完全(严格)

当您将加密模式设置为“完整(严格)”时,Cloudflare 会以“完整”模式执行所有操作,但也会对原始证书实施更严格的要求。

应用更改后,重新启动 pod 和服务以确保新的配置。

和 Kubernetes类似 以获取更多信息。

1

  • 请参阅此类似的错误以获取更多信息。


    –