You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kong-ingress-controller报CrashLoopBackOff:kong-proxy访问被禁止

解决方案

根因说明

该报错是典型的Kubernetes RBAC权限缺失问题:你部署时创建的kong-serviceaccount服务账号,没有被授予kong命名空间下核心API组services资源的get权限,导致ingress-controller容器无法读取kong-proxy服务的配置信息,启动失败触发CrashLoopBackOff。

修复步骤

步骤1:确认现有RBAC资源状态

先查看kong命名空间下已有的Role、RoleBinding资源,避免重复配置:

kubectl get role,rolebinding -n kong

步骤2:创建Services访问权限Role

新建kong-service-reader-role.yaml文件,写入以下配置:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: kong
  name: kong-service-reader
rules:
- apiGroups: [""] # 对应核心API组
  resources: ["services"]
  verbs: ["get", "list", "watch"] # 额外增加list、watch权限避免后续出现同类权限报错

应用该Role资源:

kubectl apply -f kong-service-reader-role.yaml

步骤3:绑定Role到Kong服务账号

新建kong-service-reader-binding.yaml文件,写入以下配置:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kong-service-reader-binding
  namespace: kong
subjects:
- kind: ServiceAccount
  name: kong-serviceaccount
  namespace: kong
roleRef:
  kind: Role
  name: kong-service-reader
  apiGroup: rbac.authorization.k8s.io

应用该RoleBinding资源:

kubectl apply -f kong-service-reader-binding.yaml

步骤4:验证修复效果

手动删除异常Pod触发重建,或者等待Pod自动重启:

kubectl delete pod <你的异常kong-pod名称> -n kong

Pod重建完成后查看运行状态:

kubectl get pods -n kong

如果两个容器都处于Running状态则修复完成,也可以查看ingress-controller容器日志确认没有权限类报错。

注意事项

  • 如果你部署的是集群级别的Kong Ingress Controller,需要跨命名空间访问资源,可以将上述Role替换为ClusterRole、RoleBinding替换为ClusterRoleBinding,删除配置中的namespace字段即可。
  • 如果你使用官方Helm Chart部署Kong,默认会自动创建所需的RBAC资源,出现该问题大概率是部署时关闭了rbac.create配置项,重新部署时开启该参数即可避免手动配置权限。

内容的提问来源于stack exchange,提问作者samm13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:12:02