背景:
很久很近以前(恩200多天前了),创建了一个服务应用,使用了nodeport的方式对外暴露服务,划重点--控制台创建的网络服务: 过程就是这样的......一直相安无事。但是不明所以今天业务突然无法访问了(访问地址用了其中某一太的公网地址)......试着访问了一下有点怀疑防火墙,安全组?看了一眼都没有问题。kubeclt get pods -n develop 发现服务近期更新过....怎么会事情?
记录一下阿里云ACK的nodeport
尝试访问其他节点公网地+nodeprot
curl 试了一圈果然有一台可以访问what?是不是这个pod也在这一台work节点上? 果然!顺便咨询了一下ack的小伙伴 出羽大佬告诉我将外部流量策略修改为cluster......尝试了一下解决问题
关于nodeport local cluster
顺便问了出羽大佬一下 nodeport 搞cluster local两种方式的原因是什么呢? 我个人过去的理解一直是nodeport开启了所有的节点都可以访问的阿.... 大佬给我的回复是关系到ip地址的保留与否,local可以保存 知乎也搜到了类似的答案: https://zhuanlan.zhihu.com/p/136230585 恩 看来确实还有这特性?但是还想不到我有什么使用的场景
还是忍不住吐槽一下ack的这个nodeport
- 首先把用户使用nodeport一般跟我应该是一样的想集群内work节点公网ip+nodeport访问
但是为什么控制台这个地方默认是Local呢......创建的时候我都没有多想,直接一路梭哈.....
- 可不可以默认的设置为cluster呢?如果是local你好歹检查一下我的pod有没有添加调度策略到指定pod阿,要不然下次更新了他确实不就飘逸了码?如果默认是local那是否该检查一下我的应用的yaml提醒我加一个调度策略呢?
- 所谓保留客户端源IP地址?我如果有这需求...我能不能直接写死了单个work公网IP+nodeport? 我折腾这个干吗......
- 产品服务我觉得应该以用户体验为先阿,大部分用户会是这两个选项中的Cluster吧?如果都分得清了 他明白需求会自己选择Local吧?考虑大部分用户也应该是默认的cluster阿.....
- 对比腾讯云阿里云的产品,腾讯云的用户体验确实要好与阿里云.....与ACK团队交流中也是如此,他们考虑性能种种......但是用户体验阿起码要,希望各家的产品都能更加符合用户需求,注重用户体验!