kubernetes的网络代理模式

在k8s中,如果想ping svc以及ip,发现无法ping通,使用测试环境为k8s 1.6,后来k8s升级到1.12版本,发现ping svc以及ip可以ping通,这里分析一下原因。

  后来发现是由于1.8的代理模式不是ipvs(1.6版本没有引入ipvs),1.12可以配置iptables和ipvs,而1.12版本配置使用的是ipvs。

  这里就分析一下三种模式区别以及性能对比。

1.三种代理模式

  先了解一下代理模式有哪几种。

    • userspace 代理模式(K8S 1.1之前版本)
    • iptables 代理模式(K8S 1.10之前版本)
    • ipvs 代理模式(K8S 1.11之后版本,激活ipvs需要修改配置)

1.1 userspace模式

  在 userspace 模式下,kube-proxy 通过监听 K8s apiserver 获取关于 Service 和 Endpoint 的变化信息,在内存中维护一份从ClusterIP:Port 到后端 Endpoints 的映射关系,通过反向代理的形式,将收到的数据包转发给后端,并将后端返回的应答报文转发给客户端。该模式下,kube-proxy 会为每个 Service (每种协议,每个 Service IP,每个 Service Port)在宿主机上创建一个 Socket 套接字(监听端口随机)用于接收和转发 client 的请求。默认条件下,kube-proxy 采用 round-robin 算法从后端 Endpoint 列表中选择一个响应请求。

你可能感兴趣的:(k8s探险记,网络,kubernetes,代理模式)