我完全按照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资源的权限。
-
查看此角色定义和角色绑定文件。在进行任何必要的调整后应用它们,例如服务帐户名称(从
nginx-ingress-serviceaccount
到nginx
(。 -
部署配置具有以下参数:
--configmap=$(POD_NAMESPACE)/nginx-ingress-controller-conf
。根据nginx ingress控制器文档,即"…包含控制器自定义全局配置的ConfigMap的名称"。