本文接续前一篇文章的ingress,实验亦接续
解决ipvs解析错误的问题
在前篇文章ipvs服务安装的情况下进行自动发现动作,却发现ipvs由于kubenetes更新到1.18对linux 内核要求较高的原因不能解析。
具体排错如下:
后端的80端口并没有出现错误
在另外的节点(server3)上查看发现是VIP的解析出现问题(ipvsadm -ln)
如果编写kube-proxy策略将mode改为默认(iptables),那么一切解析正确
在另外节点的iptables链上出现VIP
kubectl -n kube-system edit cm kube-proxy
kubectl -n kube-system get pod | grep kube-proxy | awk '{system("kubectl -n kube-system delete pod "$1"")}'
继续编写kube-proxy策略将mode 改为ipvs,就又出现问题(无法解析,拉伸也不会同步)
重建service(删除,创建),ipvs会对新创建的VIP解析,但是拉伸过后依然不会同步,访问VIP+hostname.html只会访问到原来的pod上,并且对service的域名也不会解析。(这里不再放图)
删除原由pod,ipvs策略依然不会更新,访问不到VIP+hostname.html。(ipvs没有健康检查)
最后:
检查dns解析发现ipvs解析出错
测试kube-dns解析
更改解析为实际的dns解析coredns,发现没问题,那么问题就出在ipvs的策略调度上
查看日志
错误:无法同步
解决:升级内核
下载最新版本,发送到k8s集群,然后各自yum install
安装完成重启,内核完成更新
默认启动内核4.9.215
dns解析正确
创建pod,相应的ipvs策略也会更新
日志正确
后端调度会有更新
拉伸: