首页 > 系统相关 >k8s kube-proxy 负载均衡路由策略 IPVS 为什么iptables 更高效

k8s kube-proxy 负载均衡路由策略 IPVS 为什么iptables 更高效

时间:2024-04-28 15:57:14浏览次数:25  
标签:iptables ip add dev IPVS netns pod kube dustin

环境

lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 24.04 LTS
Release:	24.04
Codename:	noble

先说原理

  • iptables 如果服务过多 或者pod 过多 就要则添加海量的iptabes规则
  • iptables 使用的具体算法主要是线性搜索,也可以称为顺序搜索或顺序匹配算法
  • 逐条匹配如果海量增加,查找效率大幅度下降
  • 但是如果采用 ip_set 作为一个hash表 使用 目标 IP-目标端口-源 IP 可以位置确定唯一一个路由
  • 在使用ipvs vip路由到真实的 real ip pod上 效率大幅度提升

开始实验 模拟两个pod 服务

  • 添加三个网络命名空间 网桥、pod-x、pod-y
ip link add dev bridge_home type bridge
ip netns add netns_dustin
ip netns add netns_leah
  • 配置命名空间DNS
mkdir -p /etc/netns/netns_dustin && echo "nameserver 114.114.114.114" | tee -a /etc/netns/netns_dustin/resolv.conf
mkdir -p /etc/netns/netns_leah && echo "nameserver 114.114.114.114" | tee -a /etc/netns/netns_leah/resolv.conf
  • 启用命名空间回环接口
ip netns exec netns_dustin ip link set dev lo up
ip netns exec netns_leah ip link set dev lo up
  • 添加网桥到命名空间
ip address add 10.0.0.1/24 dev bridge_home
  • pod-x 添加一对虚拟以太网接口
ip link add dev veth_dustin type veth peer name veth_ns_dustin

标签:iptables,ip,add,dev,IPVS,netns,pod,kube,dustin
From: https://www.cnblogs.com/guanchaoguo/p/18163856

相关文章

  • kube-state-metrics和cAdvisorc结合使用的好处
    kube-state-metrics是Kubernetes监控系统的重要组成部分,它提供了对集群中对象状态的实时监控。具体来说,kube-state-metrics通过监听APIServer生成有关资源对象的状态指标,比如Deployment、Node、Pod等。kube-state-metrics只是简单提供一个metrics数据,并不会存储这些指标数据,所以......
  • kubernetes安装配置使用vGPU
    前言AI落地时,在某些场景下AI模型在训练或者是推理时,其算力要求不需要占用整卡的GPU,比如只需要0.5卡GPU即可满足需求。在这种情况下,可以使用GPU虚拟化技术来解决这个问题,将整卡的GPU虚拟化为两个0.5卡的GPU,这样就可以在一张卡上同时跑两个AI训练或者AI推理应用服......
  • kubeproxy 的三种模式
    kube-proxy是对service的实现,也就是service只是用来抽象定义,真正具体化干活的是kube-proxy.它运行在每一个node节点上,负责该节点的网络代理。它是一个pod。userspace单纯的用户态会经过内核切换存一点过的开销频繁用户空间和内核空间之间切换iptales内核态直接作用Linux......
  • 什么是K8s架构?一文让你全面了解K8s(Kubernetes)
    K8S架构定义K8S是一个开源的容器部署和管理平台。它提供容器编排、容器运行时、以容器为中心的基础设施编排、负载平衡、自我修复机制和服务发现。K8S体系结构,有时也称为K8S应用程序部署体系结构或K8S客户端-服务器体系结构,用于跨主机集群组成、扩展、部署和管理应用程序容器......
  • 【Docker系列】Section 2: Creating Kubernetes Development Clusters, Understandi
    继续上文,【Docker系列】Section2:CreatingKubernetesDevelopmentClusters,Understandingobjects,andExposingServices①引言:在Section2中,我们将转移到Kubernetes集群和对象。本节的第一章将解释如何使用一个流行的工具来创建库集群,称为KinD。我们将解释如何创......
  • kubernetes1.28.0配合apisix-ingress安装过程【1】
    环境介绍主机信息注意:由于资源有限,通过三台vmware虚拟机进行安装。主机名IP操作系统配置k8s-master192.168.199.101Centos7.92CPU、4G内存、100G磁盘k8s-node01192.168.199.102Centos7.92CPU、4G内存、100G磁盘k8s-node02192.168.199.103Centos7......
  • iptables清空所有规则
    编写Shell脚本以备份和还原规则在清空规则之前,可以使用iptables-save命令将当前规则保存到文件中,以备之后的恢复。之后,可以使用iptables-restore命令来还原规则。保存规则到文件:shelliptables-save>backup.rules清空所有规则:shelliptables-Fiptables-tnat-Fiptables-t......
  • 【Docker系列】Section 2: Creating Kubernetes Development Clusters, Understandi
    引言:在Section2中,我们将转移到Kubernetes集群和对象。本节的第一章将解释如何使用一个流行的工具来创建库集群,称为KinD。我们将解释如何创建不同的网络集群,其范围从single-node(单节点)集群到使用HAProxy作为工作节点的负载平衡器的multiple-node(多节点)集群。通过一个可工作......
  • kubesphere应用系列(四)--创建自动流水线
    第一步创建多分支流水线复制生成的url,也可以在编辑设置时复制 第二步新增Jenkinsfile文件新增Jenkinsfile文件放在根目录方式一:官方示例:https://github.com/kubesphere/devops-maven-sample/blob/sonarqube/Jenkinsfile-online方式二:使用kubusphere创建手动流水线然后复......
  • 云原生周刊:Kubernetes v1.30 发布 | 2024.4.22
    开源项目推荐pv-migratepv-migrate是一个CLI工具/kubectl插件,可轻松将一个Kubernetes的内容迁移PersistentVolumeClaim到另一个Kubernetes。ClaudieClaudie是一个云原生的Kubernetes管理平台,具备跨多个云提供商和本地数据中心的多云和混合云集群管理能力。它通过......