无法使 haproxy-ingress 工作

无法使 haproxy-ingress 工作

我一直在尝试让 HAProxy Ingress 在我的 kubernetes 集群上运行。我一直按照 README 中的说明进行操作(https://github.com/jcmoraisjr/haproxy-ingress/tree/master/examples/deployment)我看到 haproxy-ingress pod 的日志中有这样的内容:

I0617 16:50:31.298997       6 launch.go:181] 
Name:       HAProxy
Release:    v0.9
Build:      git-4220104
Repository: https://github.com/jcmoraisjr/haproxy-ingress
I0617 16:50:31.299065       6 launch.go:184] Watching for ingress class: haproxy
I0617 16:50:31.299633       6 launch.go:427] Creating API client for https://10.233.0.1:443
I0617 16:50:31.307638       6 launch.go:439] Running in Kubernetes Cluster version v1.18 (v1.18.3) - git (clean) commit 2e7996e3e2712684bc73f0dec0200d64eec7fe40 - platform linux/amd64
F0617 16:50:31.308283       6 launch.go:207] no service with name ingress-controller/ingress-default-backend found: services "ingress-default-backend" is forbidden: User "system:serviceaccount:ingress-controller:default" cannot get resource "services" in API group "" in the namespace "ingress-controller"

需要注意的一点是,README 中似乎没有起作用的是:

kubectl --namespace=ingress-controller create -f haproxy-ingress.yaml

该命令失败并出现以下错误:

error: unable to recognize "haproxy-ingress.yaml": no matches for kind "Deployment" in version "apps/v1beta2"

我必须将 apiVersion 更改apps/v1beta2apiVersion: apps/v1

这是否导致了问题?

谢谢!

更新:

我终于能够让 haproxy-ingress pod 顺利启动。经过多次尝试和错误,我最终发现我需要更新 haproxy-ingress “部署”(通过仪表盘)。我只需要添加一行:

serviceAccountName: ingress-controller

紧跟在 spec: 标签之后。

我仍然无法获取外部地址。

当我跑步的时候

kubectl describe ingress app --namespace=ingress-controller

我没有看到与主机关联的 IP 地址。

$ kubectl describe ingress app --namespace=ingress-controller
Name:             app
Namespace:        ingress-controller
Address:
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host                      Path  Backends
  ----                      ----  --------
  ifs-alpha-kube.cisco.com
                            /   service-nodeport:80 (<error: endpoints "service-nodeport" not found>)
Annotations:                <none>
Events:
  Type    Reason  Age                From                Message
  ----    ------  ----               ----                -------
  Normal  CREATE  37m                ingress-controller  Ingress ingress-controller/app
  Normal  UPDATE  18m (x3 over 10h)  ingress-controller  Ingress ingress-controller/app
  Normal  UPDATE  18m (x2 over 19m)  ingress-controller  Ingress ingress-controller/app

如果我执行

$ kubectl get service -A -o wide

我发现没有服务具有外部 IP。

更新二

事实证明我不需要查看外部 IP。

答案1

F0617 16:50:31.308283 6 launch.go:207] 未找到名为 ingress-controller/ingress-default-backend 的服务:服务“ingress-default-backend”被禁止:用户“system:serviceaccount:ingress-controller:default”无法在命名空间“ingress-controller”中的 API 组“”中获取资源“services”

那里似乎发生了几件事,但总的来说,你链接到的 yaml 似乎期望 haproxy 成为额外的Ingress 控制器,而不是仅有的一——这就是为什么它缺少ingress-default-backendRoleBinding

文档版本(如所述精美手册) 似乎更完整,因为它包含ServiceClusterRoleBinding和相关组成部分

如果你精通掌舵,你可能会喜欢haproxy helm 图表更多,因为它更像是一站式购物

相关内容