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

Kubernetes中system:serviceaccount无法访问Service,如何适配RBAC?

解决Nginx Ingress控制器的RBAC权限错误

这个问题我之前部署旧版本Ingress控制器时也碰到过,核心原因是默认的default服务账户在启用RBAC的K8s集群里没有足够权限访问default命名空间下的Service资源。下面是适配RBAC的完整配置步骤:

1. 创建RBAC权限配置文件

新建一个nginx-ingress-rbac.yaml文件,内容如下,它会创建专用的服务账户、集群角色以及绑定关系:

# 专用的ServiceAccount,用于运行Ingress控制器
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress-serviceaccount
  namespace: default

# 定义Ingress控制器需要的集群级权限
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: nginx-ingress-clusterrole
rules:
  - apiGroups: [""]
    resources: ["services", "endpoints", "pods", "nodes"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["extensions", "networking.k8s.io"]
    resources: ["ingresses", "ingressclasses"]
    verbs: ["get", "list", "watch", "update"]
  - apiGroups: [""]
    resources: ["configmaps", "secrets"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["create", "patch"]

# 将ClusterRole绑定到专用ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: nginx-ingress-clusterrolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: nginx-ingress-clusterrole
subjects:
  - kind: ServiceAccount
    name: nginx-ingress-serviceaccount
    namespace: default

2. 修改Nginx控制器的Deployment配置

打开你原来的nginx-controller.yaml,找到Deployment的spec.template.spec部分,添加serviceAccountName字段,指定我们刚才创建的专用服务账户:

spec:
  template:
    spec:
      serviceAccountName: nginx-ingress-serviceaccount  # 新增这一行
      containers:
        - name: nginx-ingress-controller
          # 原有容器配置...

3. 应用配置并验证

先执行RBAC配置:

kubectl apply -f nginx-ingress-rbac.yaml

再应用修改后的控制器配置:

kubectl apply -f nginx-controller.yaml

等待Pod启动后,检查日志确认没有权限错误:

kubectl logs -l app=nginx-ingress

补充说明

  • 这里用ClusterRole是因为Ingress控制器需要跨命名空间访问Ingress、Service等资源,如果你只需要单命名空间的权限,可以换成Role和RoleBinding。
  • 权限规则里的资源和verbs是Ingress控制器正常运行所需的最小权限集合,你可以根据实际需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:07:16