部署nginx入口控制器时错误创建资源“ configmaps”

时间:2019-11-15 17:15:47

标签: kubernetes kubernetes-ingress nginx-ingress

我完全像this_tutorial一样部署nginx入口控制器。用于部署入口控制器和描述输出的yaml文件已复制到repo

创建入口控制器后,pod正在运行,但是在入口控制器日志中看到以下错误。该错误表明serviceaccount“ nginx”无权在名称空间“ ingress”中创建资源“ configmaps”。

我有问题

  • 在ClusterRole中需要哪些动词才能允许服务帐户 “ nginx”在我的命名空间中创建configmap?
  • 为什么serviceaccount“ nginx”必须在 命名空间?因为,入口控制器在名称空间中已经有configmap,那么为什么入口控制器试图再次创建?
  

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]最初创建领导者选举时出错   记录:configmaps被禁止:用户   “ 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

1 个答案:

答案 0 :(得分:1)

似乎没有授予nginx服务帐户在名称空间中创建configmap资源的权限。

  1. 看看这个role definitionrole binding文件。进行必要的调整后应用它们,例如服务帐户名(从nginx-ingress-serviceaccountnginx)。

  2. Deployment配置具有以下参数:--configmap=\$(POD_NAMESPACE)/nginx-ingress-controller-conf。根据nginx入口控制器documentation,这是“ ...包含该控制器的自定义全局配置的ConfigMap的名称。”