首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏SY小站的专栏

    kube-proxy详解

    因此,kube-proxy的iptables模式采用随机数实现了服务的负载均衡。 kube-proxy的IPVS模式在kubernetes1.11版本达到稳定。 3.2 kube-proxy IPVS参数 在运行基于IPVS的kube-proxy时,需要注意以下参数: –proxy-mode:除了现有的userspace和iptables模式,IPVS模式通过– IPVS规则时告知kube-proxy不要清理该参数配置的网段的IPVS规则。 具体来说,IPVS模式的kube-proxy将在以下4中情况依赖iptables kube-proxy 配置启动参数masquerade-all=true,即集群中所有经过Kube-proxy的包都将做一次

    2.3K50发布于 2020-06-15
  • 来自专栏sealyun

    kube-proxy源码解析

    kube-proxy主要功能是监听service和endpoint的事件,然后下放代理策略到机器上。 | 初始化配置 代码入口:cmd/kube-proxy/app/server.go Run() 函数 通过命令行参数去初始化proxyServer的配置 proxyServer, err := NewProxyServer

    92820发布于 2019-10-12
  • 来自专栏玖叁叁

    kube-proxy启动参数

    Kube-proxy是Kubernetes中的一个组件,它用于实现Kubernetes集群内部的网络代理。在Kubernetes集群中,每个节点都会启动一个kube-proxy进程来负责网络代理。 kube-proxy的启动参数kube-proxy的启动参数包括以下几个方面:1. 模式Kube-proxy有两种模式:userspace和iptables。 默认情况下,Kube-proxy使用iptables模式。在用户空间模式下,Kube-proxy将通过userspace代理实现负载均衡。 端口Kube-proxy默认监听的端口是TCP/UDP 10250和TCP/UDP 10254。 --proxy-bind-address:Kube-proxy监听的IP地址,默认为0.0.0.0。--healthz-port:Kube-proxy健康检查的端口,默认为TCP/UDP 10254。

    2K21编辑于 2023-04-28
  • 来自专栏玖叁叁

    kube-proxy介绍

    Kube-proxy的作用 Kube-proxy的主要作用是将集群内部服务的访问请求分发到正确的Pod上。 当有访问请求到达该IP地址时,Kube-proxy会根据负载均衡算法,将请求分发到后端的Pod上。同时,Kube-proxy还可以检测后端Pod的状态,以确保服务的高可用性和可靠性。 Kube-proxy的工作原理 Kube-proxy有三种不同的工作模式:userspace、iptables和IPVS。不同的模式对应着不同的实现方式和性能表现。 Kube-proxy的配置和使用 Kube-proxy的配置主要包括以下几个方面:模式选择 在Kubernetes集群中,默认使用Iptables模式。 服务发现 Kube-proxy可以通过三种方式进行服务发现:环境变量、DNS解析和Kubernetes API Server。默认情况下,Kube-proxy使用环境变量的方式进行服务发现。

    1.8K20编辑于 2023-04-28
  • 来自专栏院长运维开发

    Kube-proxy详解

    例子 以下面Service为例,分析kube-proxy创建的iptables规则。 因此,kube-proxy的iptables模式采用随机数实现了服务的负载均衡。 kube-proxy的IPVS模式在kubernetes1.11版本达到稳定。 IPVS规则时告知kube-proxy不要清理该参数配置的网段的IPVS规则。 具体来说,IPVS模式的kube-proxy将在以下4中情况依赖iptables kube-proxy 配置启动参数masquerade-all=true,即集群中所有经过Kube-proxy的包都将做一次

    4.5K31发布于 2020-06-12
  • 来自专栏田飞雨的专栏

    kube-proxy 源码分析

    上篇文章 kubernetes service 原理解析 已经分析了 service 原理以 kube-proxy 中三种模式的原理,本篇文章会从源码角度分析 kube-proxy 的设计与实现。 kubernetes 版本: v1.16 kube-proxy 启动流程 前面的文章已经说过 kubernetes 中所有组件都是通过其 run() 方法启动主逻辑的,run() 方法调用之前会进行解析命令行参数 下面就直接看 kube-proxy 的 run() 方法: 若启动时指定了 --write-config-to 参数,kube-proxy 只将启动的默认参数写到指定的配置文件中,然后退出 初始化 ProxyServer 对象 如果启动参数 --cleanup 设置为 true,则清理 iptables 和 ipvs 规则并退出 k8s.io/kubernetes/cmd/kube-proxy/app/server.go 会尝试使用 modprobe 自动加载 根据 proxyMode 初始化 proxier,kube-proxy 启动后只运行一种 proxier k8s.io/kubernetes/cmd/kube-proxy

    99600发布于 2019-12-15
  • 来自专栏田飞雨的专栏

    kube-proxy 源码分析

    上篇文章 kubernetes service 原理解析 已经分析了 service 原理以 kube-proxy 中三种模式的原理,本篇文章会从源码角度分析 kube-proxy 的设计与实现。 kubernetes 版本: v1.16 kube-proxy 启动流程 前面的文章已经说过 kubernetes 中所有组件都是通过其 run() 方法启动主逻辑的,run() 方法调用之前会进行解析命令行参数 下面就直接看 kube-proxy 的 run() 方法: 若启动时指定了 --write-config-to 参数,kube-proxy 只将启动的默认参数写到指定的配置文件中,然后退出 初始化 ProxyServer 对象 如果启动参数 --cleanup 设置为 true,则清理 iptables 和 ipvs 规则并退出 k8s.io/kubernetes/cmd/kube-proxy/app/server.go 会尝试使用 modprobe 自动加载 根据 proxyMode 初始化 proxier,kube-proxy 启动后只运行一种 proxier k8s.io/kubernetes/cmd/kube-proxy

    65910发布于 2019-12-19
  • 来自专栏田飞雨的专栏

    kube-proxy ipvs 模式源码分析

    前几篇文章已经分析了 service 的原理以及 kube-proxy iptables 模式的原理与实现,本篇文章会继续分析 kube-proxy ipvs 模式的原理与实现。 关于 kube-proxy iptables 与 ipvs 模式的区别,更多详细信息可以查看官方文档:https://github.com/kubernetes/kubernetes/blob/master kube-proxy ipvs 模式 kube-proxy 的 ipvs 模式是在 2015 年由 k8s 社区的大佬 thockin 提出的(Try kube-proxy via ipvs instead =true 参数,即集群中所有经过 kube-proxy 的包都做一次 SNAT; 2、kube-proxy 启动时指定 --cluster-cidr= 参数; 3、对于 Load Balancer 类型的 kube-proxy ipvs 源码分析 kubernetes 版本:v1.16 在前面的文章中已经介绍过 ipvs 的初始化了,下面直接看其核心方法:proxier.syncRunner。

    2.2K10发布于 2019-12-19
  • 来自专栏Kubernetes

    kube-proxy工作原理

    kube-proxy & service必要说明 说到kube-proxy,就不得不提到k8s中service,下面对它们两做简单说明: kube-proxy其实就是管理service的访问入口,包括集群内 ##kube-proxy内部原理 kube-proxy当前实现了两种proxyMode:userspace和iptables。 NodePort的工作原理与ClusterIP大致相同,发送到某个NodeIP:NodePort的请求,通过iptables重定向到kube-proxy对应的端口(Node上的随机端口)上,然后由kube-proxy 36463端口实际被kube-proxy所监听,将流量进行导向到后端的pod上。 这也导致,目前大部分企业用k8s上生产时,都不会直接用kube-proxy作为服务代理,而是通过自己开发或者通过Ingress Controller来集成HAProxy, Nginx来代替kube-proxy

    10.1K133发布于 2018-04-16
  • 来自专栏云计算与大数据

    Understanding Kubernetes Kube-Proxy

    So What Are Proxy and Kube-proxy? Kube-proxy Kube-proxy is the closest to the reverse proxy model in its concept and design (at least in However, the difference between the kube-proxy and a normal reverse proxy is that the kube-proxy proxies How Does Kube-proxy Handle NAT? Kube-proxy modes Kube-proxy can work in three different modes: userspace iptables and IPVS.

    2.3K20发布于 2019-09-10
  • 来自专栏Kubernetes

    kube-proxy源码分析

    ##kube-proxy介绍 请参考我的另一篇博文:kube-proxy工作原理 ##源码目录结构分析 cmd/kube-proxy //负责kube-proxy的创建,启动的入口 . ├─ │   └── server_test.go └── proxy.go //kube-proxy的main方法 pkg/proxy . ├── OWNERS ├── config │   ├─ ##源码分析 ###main kube-proxy的main入口在:cmd/kube-proxy/proxy.go:39 func main() { //创建kube-proxy的默认config对象 如果你没有环境,没关系,可以参考到我的上一篇博文kube-proxy工作原理查看对应的Example。 ##总结 kube-proxy实现了两种linux下的proxy mode:userspace和iptables,实现了一种windows下的proxy mode:userspace。

    2.3K50发布于 2018-04-16
  • 来自专栏编程黑洞

    kube-proxy源码分析

    # kube-proxy源码分析 # 简介 本文主要是对kube-proxy的源码分析,了解其代码结构和实现原理。 # 初始化 kube-proxy入口文件在cmd/kube-proxy/proxy.go​ func main() { command := app.NewProxyCommand() code : 命令行解析库来作为程序入口 func NewProxyCommand() *cobra.Command { opts := NewOptions() cmd := &cobra.Command{ Use: "kube-proxy events.EventSinkImpl{Interface: client.EventsV1()}) recorder := eventBroadcaster.NewRecorder(scheme.Scheme, "kube-proxy func (s *ProxyServer) Run() error { // 设置当前进程的OOM参数,资源紧张时,不优先kill掉kube-proxy var oomAdjuster *oom.OOMAdjuster

    51210编辑于 2024-01-19
  • 来自专栏飞鸟的专栏

    Kubernetes kube-proxy详细说明

    kube-proxy在创建Service代理规则时,会根据Service对象的类型和选择器定义来决定具体的转发策略。 kube-proxy支持多种负载均衡算法,包括轮询、IP散列和最小连接数等。默认情况下,kube-proxy使用轮询算法来实现负载均衡,即将请求依次分配给每个Pod或Service。 如果某个Pod或Service不可用,kube-proxy会将请求转发到另一个可用的Pod或Service上。 在iptables模式下,kube-proxy使用iptables规则来实现负载均衡和代理功能。在IPVS模式下,kube-proxy使用Linux内核提供的IPVS技术来实现负载均衡和代理功能。 kube-proxy支持多种负载均衡算法和高级功能,可以满足不同应用场景的需求。同时,kube-proxy还可以运行在不同的模式下,可以根据实际需求进行选择,以提高集群的性能和可靠性。

    94200编辑于 2023-03-28
  • 来自专栏田飞雨的专栏

    kube-proxy iptables 模式源码分析

    iptables 的功能 在前面的文章中已经介绍过 iptable 的一些基本信息,本文会深入介绍 kube-proxy iptables 模式下的工作原理,本文中多处会与 iptables 的知识相关联 iptables 的工作流程如下图所示: [iptables] kube-proxy 的 iptables 模式 kube-proxy 组件负责维护 node 节点上的防火墙规则和路由规则,在 iptables 模式下,会根据 service 以及 endpoints 对象的改变来实时刷新规则,kube-proxy 使用了 iptables 的 filter 表和 nat 表,并对 iptables 的链进行了扩充 iptables 模式源码分析 kubernetes 版本:v1.16 上篇文章已经在源码方面做了许多铺垫,下面就直接看 kube-proxy iptables 模式的核心方法。 = nil { ...... } 以上就是对 kube-proxy iptables 代理模式核心源码的一个走读。

    81900发布于 2019-12-15
  • 来自专栏后端云

    Cilium完全替换kube-proxy

    因为iptables的netfilter的低性能,Kubernetes的kube-proxy组件一直被诟病,Cilium和Calico都全面实现 kube-proxy 的功能,包括ClusterIP, Cilium和Calico都支持把Kubernetes的kube-proxy组件给替换掉,本篇是介绍Cilium替换kube-proxy。 组件 [dev@centos9 ~]$ kubectl -n kube-system delete ds kube-proxy daemonset.apps "kube-proxy" deleted[dev 已经被删除,Cilium 开启了 kube-proxy 的ClusterIP, NodePort, HostPort, ExternalIPs 和 LoadBalancer 功能。 实现了Cilium对kube-proxy的完全替换。

    1.9K30编辑于 2022-11-25
  • 来自专栏CSDN搜“看,未来”

    kubernetes 组件之 kube-proxy

    文章目录 kube-proxy介绍 kube-proxy iptables模式实现原理 iptables 存在的问题 kube-proxy ipvs模式实现原理 kube-proxy 工作原理 kube-proxy Kubernetes为了实现在集群所有的节点都能够访问Service,kube-proxy默认会在所有的Node节点都创建这个VIP并且实现负载,所以在部署Kubernetes后发现kube-proxy 有人说既然kube-proxy是四层负载均衡,那kube-proxy应该可以使用haproxy、nginx等作为负载后端啊? 因此kube-proxy默认会优先选择基于内核态的负载作为后端实现机制,目前kube-proxy默认是通过iptables实现负载的,在此之前还有一种称为userspace模式,其实也是基于iptables ---- kube-proxy ipvs模式实现原理 Kube-proxy IPVS mode kube-proxy ipvs 是基于 NAT 实现的,通过ipvs的NAT模式,对访问k8s service

    82641编辑于 2022-06-05
  • 来自专栏田飞雨的专栏

    kube-proxy ipvs 模式源码分析

    前几篇文章已经分析了 service 的原理以及 kube-proxy iptables 模式的原理与实现,本篇文章会继续分析 kube-proxy ipvs 模式的原理与实现。 kube-proxy ipvs 模式 kube-proxy 的 ipvs 模式是在 2015 年由 k8s 社区的大佬 thockin 提出的(Try kube-proxy via ipvs instead kube-proxy 在 ipvs 模式下自定义了八条链,分别为 KUBE-SERVICES、KUBE-FIREWALL、KUBE-POSTROUTING、KUBE-MARK-MASQ、KUBE-NODE-PORT 启动时指定 –-masquerade-all=true 参数,即集群中所有经过 kube-proxy 的包都做一次 SNAT; 2、kube-proxy 启动时指定 --cluster-cidr= 参数 kube-proxy ipvs 源码分析 kubernetes 版本:v1.16 在前面的文章中已经介绍过 ipvs 的初始化了,下面直接看其核心方法:proxier.syncRunner。

    1.4K00发布于 2019-12-15
  • 来自专栏田飞雨的专栏

    kube-proxy iptables 模式源码分析

    iptables 的功能 在前面的文章中已经介绍过 iptable 的一些基本信息,本文会深入介绍 kube-proxy iptables 模式下的工作原理,本文中多处会与 iptables 的知识相关联 kube-proxy 的 iptables 模式 kube-proxy 组件负责维护 node 节点上的防火墙规则和路由规则,在 iptables 模式下,会根据 service 以及 endpoints iptables 模式源码分析 kubernetes 版本:v1.16 上篇文章已经在源码方面做了许多铺垫,下面就直接看 kube-proxy iptables 模式的核心方法。 首先回顾一下 iptables 模式的调用流程,kube-proxy 根据给定的 proxyMode 初始化对应的 proxier 后会调用 Proxier.SyncLoop() 执行 proxier = nil { ...... } 以上就是对 kube-proxy iptables 代理模式核心源码的一个走读。

    1.1K20发布于 2019-12-20
  • 来自专栏kubernetes中文社区

    Kubernetes之kube-proxy service实现原理

    Overview 我们生产k8s对外暴露服务有多种方式,其中一种使用external-ips clusterip service ClusterIP Service方式对外暴露服务,kube-proxy 使用iptables mode,所以这些snat/dnat规则是kube-proxy进程通过调用iptables命令来实现的。 数据包packet进过内核时经过五链四表流程图如下: 而kube-proxy进程会在nat table内自定义KUBE-SERVICES chain,并在PREROUTING内生效,可以通过命令查看,然后在查看 总之,经过kube-proxy调用iptables命令,根据service/endpoint设置对应的chain,最终一步步跳转到pod ip,从而数据包packet下一跳是该pod ip: sudo 总结 不管集群内cluster_ip:port,还是集群外external_ip:port或node_ip:port方式访问服务,都是会通过kube-proxy进程设置的各种iptables rules

    98010发布于 2021-06-21
  • 来自专栏云服务与SRE架构师社区

    浅析kube-proxy中的IPVS模式

    作者:马楠 1 本文背景 笔者在学习kubernetes的kube-proxy的时候,kube-proxy具有三种proxy mode: userspace iptables ipvs 在Kubernetes Kube-proxy作为服务路由(Service routing)的构建块一直依赖于久经沙场的iptables来实现对核心服务类型(ClusterIP和NodePort)的支持。 在Kubernetes 1.6的时候, 它已经可以支持5000个节点,导致这个数量的实际瓶颈就是kube-proxy中的iptables。

    6.2K31发布于 2019-07-31
领券