3

看图

图片描述

四种类型

  • ClusterIP

使用集群内的私有ip —— 这是默认值。

  • NodePort

除了使用cluster ip外,也将service的port映射到每个node的一个指定内部port上,映射的每个node的内部port都一样。

  • LoadBalancer

使用一个ClusterIP & NodePort,但是会向cloud provider申请映射到service本身的负载均衡。

  • ExternalName

通过CNAME将service与externalName的值(比如:foo.bar.example.com)映射起来. 要求kube-dns的版本为1.7或以上.

路由

图片描述

  • ClusterIP
    clusterIP主要在每个node节点使用iptables,将发向clusterIP对应端口的数据,转发到kube-proxy中。然后kube-proxy自己内部实现有负载均衡的方法,并可以查询到这个service下对应pod的地址和端口,进而把数据转发给对应的pod的地址和端口。

  • NodePort
    nodePort的原理在于在node上开了一个端口,将向该端口的流量导入到kube-proxy,然后由kube-proxy进一步导给对应的pod。

  • LoadBalancer
    LoadBalancer跟nodePort其实是同一种方式。参见这里的说明。区别在于LoadBalancer比nodePort多了一步,就是可以调用cloud provider去创建LB来向节点导流。

doc


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...