背景
访问wordpress报错连接数据库失败,查看pod状态是CrashLoopBackOff。
查看pod日志报错,livenessprobe和readnessprobe失败。
解决
1.删除wordpress-db的pod,发现pod没有自动生成。查看pv,pvc状态正常。查看controller-manager日志报错:webhook-service的证书过期。
2.想起来之前配置过apiserver的准入控制webhook。
https://wghdr.top/archives/335 中的准入控制webhook部分。
删除webhook-demo的ns,查看controller-manager日志报错:
3.还原apiserver配置文件和kube-config,等待apiserver重启。重启后,controller-manager日志报错没变,且apiserver的pod也没有了,但进程还在。(这里也测试过删除controller-manager的pod,也没有自动生成)
4.查看mutatingwebhookconfigurations。
kubectl get mutatingwebhookconfigurations
kubectl get mutatingwebhookconfigurations -o yaml
5.删除demo-webhook的mutatingwebhook。
k delete mutatingwebhookconfigurations demo-webhook
6.查看pod已自动生成。
原因
由于demo-webhook的mutatingwebhook的resources是pods,operations是CREATE,所以在创建pod时会自动添加这个准入插件到pod上,只有所有的adminssion-plugin都通过pod才能生成。
所以不删除demo-webhook的话,重新生成证书也可以解决的。我是因为不需要这个demo了,就删掉了。
PS:要记得你自己干过什么。。。