1 Service 含义
K8s service可以理解为对一组Pod的抽象。类似于Nginx能够把请求转发的对应的服务上。
2 Service作用
2.1 pod使用时因某些问题重启,从而导致pod 的IP发生变化,会导致旧的IP不能用,影响用户对系统使用。service的出现很好的解决此问题,客户端通过service 访问pod,当podIP有变化也不会影响(service通过Label Selector跟pod绑定)。
2.2 对外暴露pod访问请求端口。
2.3 固定IP。
2.4 负载均衡。
3 Service 工作机制
3.1 userspace代理模型流程
userspace指Linux操作系统的用户空间(物理上为内存)。对于service会对外暴露端口号,用户空间中的kube-proxy会监控service端口上请求,并把请求转发到对应的pod上。
请求到达内核空间后经由套接字送往用户空间的kube-proxy,并调度至后端pod。请求会在内核和用户空间之间来回转发导致效率不高。(如下图)
3.2 iptables代理模型流程
kube-proxy负责跟踪API Server上的Service和Endpoin