一次kubesphere ingress故障的解决
前言
采用单 master 方式安装 Kubesphere 3.2.1 以后, 启动了集群 gateway, 但是 ingress 总是不能正常工作,排查了很久,终于解决问题
问题1: ingress controller 镜像版本过低,启动失败。
-
kubesphere 3.2.1默认的ingress controller是kubesphere/nginx-ingress-controller:v0.48.1。我在安装kubesphere时,选择安装的kubernetes 1.23.0, 因此存在兼容性问题。需要修改默认的nginx ingress controller版本,查看docekrhub上kubesphere的最新nginx ingress controller版本是v1.1.0。 -
通过 修改
configmapks-router-config中的nginx ingress controller的image版本号为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 controller的pod日志,发现是无法完成ingress controller选举,提示没有权限更新ingress-controller-leader-kubesphere-router-kubesphere-system - 通过增加 可以
update该configmap的clusterrole, 绑定到sakubesphere-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

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





