1、service类型
service主要类型包括clusterIP(headless)、nodeport、LB。
clusterip:集群内部可以访问的固定虚机IP地址;
headless:是不分配cluster IP地址的cluster服务类型,可通过DNS访问cluster,也可通过指定podname.clustername.<namespace name>.svc.cluster.local,访问指定的pod;
nodeport:将service的port射到节点的port,外部可通过node ip + port的方式直接访问service;
LB:负载均衡器后端服务器为集群各节点IP+nodePort;
2、服务发现
定义服务的时候,通过service的selector指定pods,并根据pods的IP创建相应的endpoints,endpoints controller监听watch service以及pod的变化,维护endpoint的详细;kube-proxy根据service和endpoint来维护本地的路由规则,当endpoint发生变化,即service及其关联的pod发生变化,kube-proxy都会在每个节点上更新iptables;
3、kube-proxy实现模式
当前支持的代理模式主要是ipvs、iptables;
iptables:以内核iptables的NAT方式实现service的负载均衡;由于iptables新增规则需要整体flush,另外规则串行匹配,造成时间和内存的消耗;
ipvs:通过一定的规则进行hash映射,改善iptables的消耗问题;
来源:oschina
链接:https://my.oschina.net/u/4361024/blog/4882602