首页 > 解决方案 > 部署 nginx 入口控制器时错误创建资源“configmaps”

问题描述

我完全按照this_tutorial来部署nginx 入口控制器。用于部署入口控制器和描述输出的 yaml 文件被复制到repo

创建 ingress-controller 后,pod 正在运行,但在 ingress-controller 日志中看到以下错误。该错误表示服务帐户“nginx”无权在命名空间“ingress”中创建资源“configmaps”。

我有一个问题,

E1115 15:05:49.678247 7 leaderelection.go:228] 最初创建领导选举记录时出错:configmaps 被禁止:用户“system:serviceaccount:ingress:nginx”无法在命名空间“ingress”中的 API 组“”中创建资源“configmaps” "

(截断)

I1115 15:05:49.742498 7 controller.go:220] 入口后端成功重新加载... E1115 15:06:03.379102 7 leaderelection.go:228] 最初创建领导选举记录时出错:禁止配置映射:用户“system:serviceaccount: ingress:nginx" 无法在命名空间 "ingress" 中的 API 组 "" 中创建资源 "configmaps"

可以从this_file访问详细的 kubectl 日志。

[编辑]

root@desktop:~/github/# kubectl get -n ingress all
NAME                                            READY   STATUS    RESTARTS   AGE
pod/default-backend-7fcd7954d6-gdmvt            1/1     Running   0          3d14h
pod/default-backend-7fcd7954d6-hf65b            1/1     Running   0          3d14h
pod/nginx-ingress-controller-65bfcb57ff-9nz88   1/1     Running   0          2d22h


NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
service/default-backend   ClusterIP   10.100.x.y   <none>        80/TCP    3d14h


NAME                                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/default-backend            2         2         2            2           3d14h
deployment.apps/nginx-ingress-controller   1         1         1            1           2d22h

NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/default-backend-7fcd7954d6            2         2         2       3d14h
replicaset.apps/nginx-ingress-controller-65bfcb57ff   1         1         1       2d22h

root@desktop:~/github# kubectl get -n ingress configmap
NAME                            DATA   AGE
nginx-ingress-controller-conf   1      3d14h

标签: kuberneteskubernetes-ingressnginx-ingress

解决方案


看起来nginx服务帐户没有被授予在命名空间中创建配置映射资源的权限。

  1. 查看此角色定义角色绑定文件。在进行任何必要的调整后应用它们,例如服务帐户名称(从nginx-ingress-serviceaccountnginx)。

  2. 部署配置有这个参数:--configmap=\$(POD_NAMESPACE)/nginx-ingress-controller-conf. 根据 nginx 入口控制器文档,即“...包含控制器的自定义全局配置的 ConfigMap 的名称”。


推荐阅读