Kubernetes服务发现

集群内服务发现

DNS+ClusterIP pod的ip直接访问,但是pod的ip经常会变化 使用pod ip肯定不是好的方法,service自带负载均衡指向多个pod实例,service ip是相对固定的,使用service ip访问,程序中布满了service ip显然也不是优雅的方式,使用DNS的方式可以直接通过service的名字访问
Headless 当service自带的负载均衡不能满足我们的需求,或者pod实例间需要交互的时候,使用HeadlessService并不会自动负载均衡而是将pod列表返回

集群内访问集群外

IP+Port 直接访问集群外服务
OutService 配置service的entpoint指向外部服务,程序像访问集群内服务一样访问外部服务

集群外访问集群内

NodePort nodeport是一种service类型它会在每一个节点上暴露一个端口,不是一种常用的方法会有一定的资源浪费服务多的时候port可能不够用
hostport hostport并不是每个节点都会暴露端口,只是在service所在的节点简单的端口映射
Ingress 在集群内部部署一个nginx,通过nginx反向代理访问到集群内部其他服务,但是集群内pod经常变,域名经常增加修改nginx配置也是一件麻烦的事情,kubernetes考虑到了这个问题提出了一个概念叫ingress,通过ingressController去实现域名的解析
image.png