k8s service - 资源及其实现模型
定义
Service 是 k8s 的核心资源类型之一,它是一种抽象: 通过规则定义出由多个 pod 对象组成的逻辑集合,及访问这组pod的策略
Service资源
- Cluster IP: Service 对象中的IP,在k8s 专用的IP,是一种虚拟IP
- Service 端口用于接收客户端请求并将其转发至其后端的Pod 应用相关的端口,称为端口代理,也称四层代理(工作于TCP/IP协议栈的传输层)
-
Service 资源基于标签选择器将一级Pod定义成为一个逻辑组合,通过自己的IP地址和端口调度代理请求至组内的Pod对象之上
-
Service 资源会通过API Server持续监视标签选择器匹配到后端Pod 对象,并实时跟踪对象变动,如,ip 地址,对象增加减少
-
Service 不直接连接Pod 对象,与Endpoints关系 ,Endpoint对象是由Ip地址和端口组成的列表
虚拟IP 和服务代理
- userspace 模型
- iptables 代理模型
- ipvs 代理模型
流程定义
- 一个Service 对象就是工作节点上一些iptables 和 ipvs 规则, 用于将到达Service 对象的IP 地址调度转发至相应的 Endpoints 对象指定的IP和端口
- kube-proxy 组件通过API-server 持续监控各个Service及其联动的 Pod,并将其创建和变动反映至当前 工作节点上相应的 iptables 和 ipvs规则上
userspace 模型
ipatbles 代理模型
和 userspace 模型不同点是: 不再经过 kube-proxy 转发到后端 Pod, 由 iptables 直接转发