因为服务复杂,服务间调用很多的话整个网络会很乱,只用 nginx 的话不能实现这个交叉网络。
现在 nginx 在 k8s 中的地位就是上图的 ingress controller,一般只用来做域名级的入口路由,比如 abc.com/api 路由到后端服务,abc.com/ 路由到前端界面,还有一个用途就是加 https 证书,此外没有过多功能了。
flannel 做的是容器之间的网络路由,包括集群内外路由,这层比较轻,对外不可见。
k8s 的网络确实是复杂,不过你可以直接用云厂商的 k8s 托管服务,都帮你把这些整好了。