nginx-ingress升级失败问题排查
背景
rancher自带的nginx-ingress-controller版本是0.25.1,不支持session-cookie-samesite选项,需要升级nginx-ingress-controller至0.29版本。
过程
升级镜像版本
在Rancher UI界面,对nginx-ingress-controller进行升级操作,
镜像选择quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
如果是国内用户,下载不到,可以选择用国内源的镜像quay-mirror.qiniu.com/nginx-ingress-controller:0.29.0
报错
升级之后,nginx-ingress-controller
组件一直起不来,查看日志信息,报以下错误:
1 | unexpected error storing fake SSL Cert: could not create PEM certificate file /etc/ingress-controller/ssl/default-fake-certificate.pem: open /etc/ingress-controller/ssl/default-fake-certificate.pem: permission denied |

解决
从日志中可以看到是权限问题,查看官方说明,0.29版本访问用户为www-data -> 101
,而0.25版本默认为33,所以要对runAsUser进行修改
编辑yaml文件,修改runAsUser
的值,33改为101即可
1 | securityContext: |
修改完后保存自动重新部署,可以看到已经能够正常启动了

- runAsUser:可以指定Pod或容器的访问权限,参考:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/