部署 nginx 入口控制器时创建资源"configmaps"时出错



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

创建入口控制器后,pod正在运行,但在入口控制器日志中看到以下错误。该错误表示服务帐户"nginx"无权在命名空间"ingress"中创建资源"configmaps"。

我有问题,

  • ClusterRole中需要哪些谓词才能允许服务帐户"nginx"在我的命名空间中创建配置映射
  • 为什么serviceaccount"nginx"必须在命名空间?因为,入口控制器的命名空间中已经有了configmap,那么入口控制器为什么要再次尝试创建呢

E1115 15:05:49.678247 7 leaderelection.go:228]初始错误创建领导人选举记录:禁止配置映射:用户"system:serviceaccount:ingress:nginx"无法创建资源命名空间"ingress"中API组"中的"configmaps">

(截断(

I1115 15:05:49.7742498 7控制器.go:220]入口后端已成功重新加载。。。E1115 15:06:03.379102 7leaderelection.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

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

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

  2. 部署配置具有以下参数:--configmap=$(POD_NAMESPACE)/nginx-ingress-controller-conf。根据nginx ingress控制器文档,即"…包含控制器自定义全局配置的ConfigMap的名称"。

最新更新