腾讯云 Kubernetes 高性能网络技术揭秘——使用 eBPF 增强 IPVS 优化 K8s 网络性能-范建明
管理service • IPVS 仅仅提供了DNAT,还需要借用 iptables+conntrack 做SNAT • 控制面和数据面算法复杂度都是O(1) • 经历了二十多年的运行,比较稳定成熟 • 支持多种调度算法 优势 IPVS mode 不足之处 • 没有绕过conntrack,由此带来了性能开销 • 在k8s的实际使用中还有一些Bug 02 优化的方法 编译成eBPF中间代码 • 注入内核 • 挂载到network traffic control • 报文激发eBPF代码 技术创新点一 • IPVS 对conntrack的功能依赖 • Iptables SNAT • 具体如何绕过conntrack? • 进报文 • 将处理请求的钩子从nf local-in 前移到nf pre-routing • skb的路由指针是NULL • 处理分片 ip_output -> NF postrouting -> ip_finish_output • 修改成: • 对kenel 做了hack,直接访问ip_finish_output IPVS 绕过conntrack 技术创新点二 • 在linux traffic control上挂一段eBPF 代码,在网卡出报文之前做SNAT • 尽量将大部分代码放在eBPF中,方便升级和维护。 • eBPF loader0 码力 | 27 页 | 1.19 MB | 9 月前3North-South Load Balancing of Kubernetes Services with eBPF/XDP
3:30000 httpd httpd 1010101010111 1010101010111 1010101010111 1010101010111 -A KUBE-FORWARD -m conntrack --ctstate INVALID -j DROP -A KUBE-FORWARD -m comment --comment "kubernetes forwarding rules" -m "kubernetes forwarding conntrack pod source rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A KUBE-FORWARD -d 10.217.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod destination rule" rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A KUBE-SERVICES -d 10.99.38.155/32 -p tcp -m comment --comment "default/nginx-59: has no endpoints" -m tcp --dport 80 -j REJECT --reject-with0 码力 | 11 页 | 444.46 KB | 1 年前3K8S安装部署开放服务
C. 安装 ipvs 【注】ipvs 将作为 kube-proxy 的代理模式 Step1: 安装 yum install ipvsadm ipset sysstat conntrack libseccomp –y Step2: 加载 cat > /etc/sysconfig/modules/ipvs.modules <conntrack modprobe -- ip_tables modprobe -- ip_set modprobe -- xt_set modprobe -- ipt_set modprobe /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack D. 安装 docker-ce 和 k8s See https://cloud.tencent.com/developer/article/1627330 Step1: 安装 docker-ce 0 码力 | 54 页 | 1.23 MB | 1 年前3CentOS 7 操作命令-基础篇1.2
tcp --syn -j DROP 或: iptables -A INPUT -i ens33 -m conntrack --ctstate NEW,INVALID -j DROP 2.允许已建立连接或有关联的数据包通过 #iptables -A INPUT -i ens33 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 3.允许访问特定端口 允许访问特定端口 #iptables -A INPUT -i ens33 -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT -m muliport --dports 20,21,22 -m conntrack ...... 4.允许、限制拒绝 icmp #iptables -A INPUT -p icmp --icmp-type echo-request0 码力 | 115 页 | 8.68 MB | 1 年前3运维上海2017-Kubernetes 在大规模场景下的service性能优化实战 - 杜军
ü ���� - IPVS service������������ ü ������� - nf_conntrack_ipv4, ip_vs, ip_vs_rr, ip_vs_wrr, ipvs_sh ü # echo 1 > /proc/sys/net/ipv4/vs/conntrack ü �����port range0 码力 | 38 页 | 3.39 MB | 1 年前3Cilium的网络加速秘诀
process kernel network stack raw PREROUTING mangle PREROUTING nat PREROUTING tc ingress conntrack filter FORWARD mangle POSTROUING nat POSTROUING tc egress veth XDP的性能上限极高,可能是 TC 的 10 倍左右 raw PREROUTING mangle PREROUTING nat PREROUTING tc ingress conntrack filter FORWARD mangle POSTROUING nat POSTROUING tc egress routing XDP kernel ethernet0 码力 | 14 页 | 11.97 MB | 1 年前3PieCloudDB Database 社区版集群安装部署手册 V2.1
openssl-devel. wget vim 3. yum install -y socat 4. yum install -y epel-release 5. yum install -y conntrack-tools 6. yum erase -y podman buildah ##KylinOS 必须先执行移除 7. yum remove -y docker-runc ##KylinOS openssl-devel. wget vim 3. yum install -y socat 4. yum install -y epel-release 5. yum install -y conntrack-tools 3.3 添加 docker 的配置 说明:如果 harbor 启用了 https 且有 cert 相关证书,可以用 docker pull 正常拉取 images,则可以不0 码力 | 42 页 | 1.58 MB | 1 年前3Kubernetes 异常配置检测框架
VPC 容器内配置错误 Iptables、路由配置错误 网卡、驱动配置错误 安全组配置错误 VPC 转发配置错误 Autopilot Engine 诊断任务 网络检测 Conntrack 采集 网卡丢包事件 所有包采集 Flow 采集 ebpf 注入 trace 读取 集群升级 集群异常检测闭环 • 集群升级前置检查 • 集群升级 • 集群升级后置检查 Autopilot0 码力 | 31 页 | 9.57 MB | 1 年前3Steering connections to sockets with BPF socket lookup hook
ports 7, 77, 777 are closed check VM IP What is socket lookup? raw PREROUTING filter INPUT conntrack routing decision mangle PREROUTING nat PREROUTING socket lookup socket receive buffer Application0 码力 | 23 页 | 441.22 KB | 1 年前3基于Kubernetes构建容器云平台的实践 - UCloud优刻得实验室负责⼈ 叶理灯
IPv6 地址段通过 BGP 路路由协议宣告给接⼊入交换机 P o d 返 回 的 包 , 会 先 回 给 S e r v i c e Gateway,由于做了了SNAT,基于连接 追踪(conntrack),再返回给请求的 客户端。 每个接⼊入交换机下,选择两台节点作为Service Gateway,作为集群外部访问Service的⽹网关 Kube-proxy负责将发往 Service IP0 码力 | 30 页 | 3.52 MB | 1 年前3
共 49 条
- 1
- 2
- 3
- 4
- 5
相关搜索词
腾讯Kubernetes高性性能高性能网络技术揭秘使用eBPF增强IPVS优化K8s建明范建明NorthSouthLoadBalancingofServiceswithXDPK8S安装部署开放服务CentOS操作命令操作命令基础1.2运维上海2017大规规模大规模场景service实战杜军Cilium加速秘诀PieCloudDBDatabase社区集群手册V2DSLFrameworkForAbnormalConfigurationDetectionSteeringconnectionstosocketsBPFsocketlookuphook基于构建容器平台实践UCloud优刻实验实验室负责叶理灯