service select:
service通过selector和pod建立关联。
k8s会根据service关联到pod的podip信息组成一个endpoint。
若service定义中没有selector字段,service被创建时,endpoint controller不会创建endpoint。
service负载分发策略有两种:
RoundRobin: 轮训模式,即轮序请求转发到后段的各个pod上。(默认模式)
SessionAffinty: 基于客户端ip地址进行会话保持的模式,第一次客户端访问后段某个pod,之后的请求都会转发到这个pod上。
k8s服务发现方式:
DNS: 可以通过cluster add-on的方式轻松轻松的创建KubeDNS来对集群内的service进行服务发现,这也是官方强烈推荐的方式。为了让pod中的容器可以使用kube-dns来解析域名,k8s会修改容器的/etc/resolv.conf配置。
k8s服务发现原理:
endpoint
endpoint是集群中的一个资源对象,储存在etcd中,用来记录一个service对应的pod的访问地址。
service配置serlector,endpoint controler才会自动创建对应的endpoint对象;否则,则不会创建endpoint对象。
endpoint controlor
endpoint controlor是k8s集群的其中一个组件,其功能如下:
负责生成和维护所有的endpoint对象的控制器。
负责监听
源文章地址:
https://blog.csdn.net/luanpeng825485697/article/details/84296765?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164199455616780265488959%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164199455616780265488959&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-84296765.first_rank_v2_pc_rank_v29&utm_term=endpoint#