今天在k8s cluster里部署一个operator的pod的时候老是报错不断重启,查看pod log显示:
listen tcp :443: bind: permission denied, failed waiting for all runnables to end within grace period of 30s: context deadline exceeded
说明container不能绑定到pod的443端口上,然后排查了pod内的其他container并没有占用443端口,这就很奇怪了,后来发现是因为container加了securityContext导致没有权限绑定端口导致的:
securityContext:
runAsNonRoot: true
runAsUser: 1234
但是我的deployment yaml里并没有定义这个securityContext啊,这个是怎么回事?后来发现是自己之前测试加了个MutatingWebhook导致的生成的pod自动加上了这个securityContext,删掉这个webhook然后删掉有问题的pod重新创建pod就好了:
kubectl delete mutatingwebhookconfigurations cainjector-webhook-demo
mutatingwebhookconfiguration.admissionregistration.k8s.io "cainjector-webhook-demo" deleted
这种问题还是很难排查的,这次排查了很久,很浪费时间,所以测试的数据要及时删掉避免日后坑到自己。
正文完