问题描述
我在 Kubernetes 版本 v0.44.0
上运行 nginx-ingress v1.20.2
,使用 helm chat ingress-nginx-3.23.0
安装 ingress。 nginx 从日志文件中获取流量,我看到此错误消息。
E0209 23:21:41.300842 6 token_source.go:152] Unable to rotate token: failed to read token file "/var/run/secrets/kubernetes.io/serviceaccount/token": open /var/run/secrets/kubernetes.io/serviceaccount/token: permission denied
E0209 23:21:41.316286 6 token_source.go:152] Unable to rotate token: failed to read token file "/var/run/secrets/kubernetes.io/serviceaccount/token": open /var/run/secrets/kubernetes.io/serviceaccount/token: permission denied
Nignx 正在运行 uid 101
但 serviceaccount
目录由 root
用户拥有。
如何修复此错误消息?
谢谢
解决方法
这有点奇怪,因为我已经测试过我没有遇到过这样的错误。
您可以使用 securityContext
,set
- fsGroup:101 或
- runAsUser/runAsGroup
但是 ingress-nginx 仍然设置了适当的 securityContext
(例如绑定到 80/443),所以它应该可以工作。
正如@sfgroups 提到的,解决方案是让 nignx 不运行 uid 101
而是 0
。
向安装命令添加标志:--set controller.image.runAsUser=0
。