一次kubesphere ingress故障的解决

本文记录了在Kubesphere 3.2.1环境下,遇到ingress控制器由于镜像版本不兼容及权限问题导致无法正常工作的问题。解决方案包括升级ingresscontroller镜像至v1.1.0以解决版本兼容性,以及创建并绑定ClusterRole来赋予ingress控制器更新configmap的权限,从而修复ingress不能获取address的错误。

一次kubesphere ingress故障的解决

前言

采用单 master 方式安装 Kubesphere 3.2.1 以后, 启动了集群 gateway, 但是 ingress 总是不能正常工作,排查了很久,终于解决问题

问题1: ingress controller 镜像版本过低,启动失败。

  • kubesphere 3.2.1 默认的 ingress controllerkubesphere/nginx-ingress-controller:v0.48.1。我在安装 kubesphere 时,选择安装的 kubernetes 1.23.0, 因此存在兼容性问题。需要修改默认的 nginx ingress controller 版本,查看 docekrhubkubesphere 的最新 nginx ingress controller 版本是 v1.1.0

  • 通过 修改 configmap ks-router-config 中的 nginx ingress controllerimage 版本号为 v1.1.0,再重启 kubersphere controller,可以解决该问题。

  • 这个地方我走了很多弯路,发现 ks-config 的配置需要在重启 kubesphere controller 才会生效。

  • kubesphere 采用 helm 方式安装额 nginx ingress controller, 但是该 helm 是包含在 kubesphere controller 镜像中,我尝试修改 helm 包的 values.yaml,替换新的镜像文件,实际上也不能生效,

问题2:ingress 不能正确获取到 address

  • 查看 nginx ingress controllerpod 日志,发现是无法完成 ingress controller 选举,提示没有权限更新 ingress-controller-leader-kubesphere-router-kubesphere-system
  • 通过增加 可以 updateconfigmapclusterrole, 绑定到 sa kubesphere-router-kubesphere-system, 问题解决。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ingress-controller-configmap-update
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["ingress-controller-leader-kubesphere-router-kubesphere-system"]
  verbs: ["update"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubesphere-router-ku
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值