随着容器技术的发展成熟,越来越多的组件迁移到容器,在技术迁移过程中,数据库,游戏,AI 这些组件对容器网络性能(时延,吞吐,稳定性)提出了更高的要求。为了得到更优的时延和吞吐表现,各大云厂商都在致力于缩短节点内容器的网络访问链路,让数据包能尽可能快地转发到容器网卡。

腾讯云容器服务 TKE 借助智能网卡推出下一代容器网络方案,该方案实现了一个 Pod 独占一张弹性网卡,不再经过节点网络协议栈(default namespace),极大缩短了容器访问链路,缩短了访问时延,并使 PPS 可以达到整机上限。该方案实现了短链接场景下 QPS 相比之前容器网络方案(策略路由方案,网桥方案)提升 50%-70%;长链接场景下 QPS 提升 40%-60%。

由于不再经过节点网络协议栈,传统基于 iptables 和 IPVS 的 ClusterIP service 访问方案不能直接适用于该方案。为了实现该方案下 Pod 可以直接访问 ClusterIP service,TKE 推出 share-NS IPVS 方案,使得在容器网络命名空间下也可以访问到节点网络协议栈的 IPVS 规则,同时配合 CLB 直通 Pod,实现了完整意义上的弹性网卡直通。

该方案实现了针对 ClusterIP service 短链接场景下 QPS 相比 iptables 方案提升 40%-60%,IPVS 方案提升 70%-90%;长链接场景下 QPS 相比 iptables 方案提升 30%-50%,IPVS 方案提升 50%-70%。

新一代容器网络方案推出背景

在介绍新一代容器网络方案前,先和大家介绍一下 TKE 现有网络方案,和现有网络方案面临的挑战,以及客户新诉求。

现有网络方案介绍

腾讯云容器服务 TKE 目前提供了两种容器网络模式可供用户选择使用。

GlobalRouter 模式:基于 vpc 实现的全局路由模式, 目前是 TKE 默认网络方案。该模式依托于 vpc 底层路由能力,不需要在节点上配置 vxlan 等 overlay 设备,就可以实现容器网络 和 vpc 网络的互访,并且相比于 calico/flannel 等网络方案,因为没有额外的解封包,性能也会更好。

VPC-CNI 模式: TKE 基于 CNI 和 VPC 弹性网卡实现的容器网络能力,适用于 Pod 固定 IP,CLB 直通 Pod,Pod 直绑 EIP 等场景。该网络模式下,容器与节点分布在同一网络平面,容器 IP 为 IPAMD 组件所分配的弹性网卡 IP。

GlobalRouter 和 VPC-CNI 模式目前已服务 TKE 上万企业用户, 两种网络模式也存在一定使用限制见:如何选择TKE网络模式,随着客户使用场景的丰富, TKE 的客户对容器网络又提出了更高的要求。

客户对 TKE 网络方案的新需求

除了在为腾讯外部 TKE 客户提供容器网络能力之外,腾讯云容器服务 TKE 作为腾讯内部业务云原生的底座,在支持腾讯内部自研业务上云如 QQ、腾讯会议、游戏、CDB、大数据等业务的过程中也收到以下的需求点:

  • 在 VPC-CNI 模式的基础上进一步降低资源损耗,降低网络时延,提高网络吞吐(关键点)
  • 支持 Pod 级别的安全隔离
  • 支持 CLB 直通Pod,不再经过 NodePort 转发,提升转发性能并拥有统一的负载均衡视图

基于以上场景,TKE 团队联合底层腾讯云 VPC 团队、虚拟化团队推出了新一代的独立网卡的 VPC-CNI 方案。

TKE新一代网络方案介绍

TKE 新一代网络方案在原有 VPC-CNI 模式单网卡多 IP 模式的基础上, 进阶为容器直接独享使用弹性网卡,无缝对接腾讯云私有网络产品的全部功能,同时在性能做了极大的提升(详情见下文性能介绍)。

压测数据说明

  • 为了得到不同网络方案下的 QPS,这里控制变量,让不同网络方案的 nginx Pod 运行在同一个节点,使用 wrk 分别压测不同 Pod,并让服务端节点的 cpu 接近100%。



  • 为了得到不同 Service 方案下的 QPS,这里控制变量,让 kube-proxy 和 wrk Pod 运行在同一节点,压测相同后端,并让客户端节点的 cpu 接近100%。



功能简介

新一代 VPC-CNI 模式的网络方案中,能够在原有的网络能力中额外增加

  1. 支持 Pod 绑定 EIP/NAT,不再依赖节点的外网访问能力,无须做 SNAT,可以满足直播、游戏、视频会议等高并发,高带宽外网访问场景
  2. 支持 Pod 绑定安全组,实现 Pod 级别的安全隔离
  3. 支持基于 Pod 名称的固定 IP,Pod 重新调度后仍能保证 IP 不变
  4. 支持 CLB 直通 Pod,不再经过 NodePort 转发,提升转发性能并拥有统一的负载均衡视图
  5. 即将支持黑石 2.0物理服务器(推荐使用, 默认使用智能网卡,网络性能更高)
  6. 即将支持基于 Pod 名称的固定 EIP,满足 Pod 固定外网出口

使用方法

申请新一代容器网络方案内测开通后,创建 TKE 集群时容器网络模式选择 VPC-CNI/Pod 独立网卡模式即可:

实现原理简介

新一代方案在原有 VPC-CNI 模式的基础上扩展,依托于弹性网卡,将绑定到节点的弹性网卡通过 CNI 配置到容器网络命名空间,实现容器直接独享使用弹性网卡。

您可以关注腾讯云原生公众号,后续将会推送 TKE 新一代网络方案实现的技术细节

当前内测阶段使用限制

  1. 仅支持部分 S5 的机型使用该网络模式。
  2. 节点上运行的 Pod 数量限制为节点核数的5倍。
  3. 仅支持新集群,存量 TKE 集群暂不支持变更网络方案。

TKE新一代网络方案内测邀请

我们诚挚邀请您参与腾讯云下一容器独立网卡网络方案产品能力的内测, 您可以通过以下链接提交内测申请:https://cloud.tencent.com/apply/p/85p1zs6x777

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

腾讯云容器服务 TKE 推出新一代零损耗容器网络的更多相关文章

  1. 在腾讯云容器服务 TKE 中利用 HPA 实现业务的弹性伸缩

    在 TKE 上利用 HPA 实现业务的弹性伸缩 概述 Kubernetes Pod 水平自动扩缩(Horizontal Pod Autoscaler,以下简称 HPA)可以基于 CPU 利用率.内存利 ...

  2. 腾讯云容器服务 TKE 拿下新加坡 MTCS 最高级别安全认证

    近日,腾讯云容器服务 TKE 荣获新加坡 MTCS 最高级安全认证,标志着腾讯云 TKE 在为用户提供可靠.易部署.灵活扩展等基础服务上,已经全面满足了新加坡监管机构以及多个行业客户对服务安全的要求. ...

  3. 容器服务 TKE 存储插件与云硬盘 CBS 最佳实践应用

    引言 随着自研上云的深入,越来越多的有状态服务对于在 TKE 集群中使用云上存储能力的需求也越来越强烈. 目前腾讯云容器服务 TKE(Tencent Kubernetes Engine已支持在 TKE ...

  4. asp.net core使用serilog将日志推送到腾讯云日志服务

    为什么是serilog? Serilog是 .NET 中最著名的结构化日志类库. 基于日志事件log events,而不是日志消息log message. 你可以将日志事件格式化为控制台的可读文本或者 ...

  5. JavaWeb-SpringBoot_(下)腾讯云点播服务之视频的显示-demo

    腾讯视频云点播 传送门 项目在腾讯云点播服务之视频的上传(上)[附源码]的基础上添加了两个html页面 此视频  播放传送门 (播放视频GIF会超过10M...) package com.Gary.v ...

  6. JavaWeb-SpringBoot_(上)腾讯云点播服务之视频的上传-demo

    使用Gradle编译项目 传送门 腾讯视频云点播 传送门 项目已托管到Github上 传送门 腾讯云点播服务之视频的显示(下) 传送门 个人腾讯云控制台中的视频管理 IndexController.j ...

  7. 腾讯云OCR服务二次开发

    本文记录了对腾讯云OCR服务二次开发的代码和开发过程中遇到的问题.

  8. 腾讯云游戏服务平台CMatrix品牌全新升级为GameMatrix

    近日,隶属腾讯互娱公共研发运营体系(下文称CROS)下的云游戏服务平台CMatrix宣布进行品牌升级,启用全新商标Tencent GameMatrix,将原先代表云服务的“C”替换成游戏的英文单词“G ...

  9. 容器服务 TKE 上服务暴露的几种方式

    预备知识 1. K8S 上 Service 类型 ClusterIP 通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 ServiceType. NodePort ...

随机推荐

  1. HCIA——应用层常用协议

    DNS协议 1.什么是DNS协议呢? DNS协议简单来说就是为IP取一个别名的系统(叫域名如www.baidu.com),最终目的是便于我们记忆. 一个域名可能有多个IP,同样一个IP可能也会有多个域 ...

  2. elasticsearch-安装-centos7- es7.5 搭建

        centos6 搭建 参考 https://www.cnblogs.com/php-linux/p/8758788.html   搭建linux虚拟机  https://www.cnblogs ...

  3. doment ready事件和load事件的区别及实现

    从2017年9月至今工作中大部分使用react,前端渲染的一些基础性知识记忆不是很深刻了.面试**公司的时候,碰到"document ready和load的区别,以及document rea ...

  4. 通透,23 个问题 TCP 疑难杂症全解析

    每个时代,都不会亏待会学习的人. 在进入今天主题之前我先抛几个问题,这篇文章一共提出 23 个问题. TCP 握手一定是三次?TCP 挥手一定是四次? 为什么要有快速重传,超时重传不够用?为什么要有 ...

  5. java默认值

    注意:此处默认值是在类成员时才可以被初始化有默认值 如果时在局部变量中,必须先自己初始化才可以使用,否则编译失败

  6. Django( 学习第五部 Django之模板语法)

    目录 模板语法 --- 传值 摸板语法 --- 过滤器 模板语法 --- 标签 自定义过滤器.标签.inclusion_tag 模板的继承 模板语法 --- 传值 {{}}       变量相关 {% ...

  7. 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理

    在我们一般系统中,往往都会涉及到附件的处理,有时候附件是图片文件,有时候是Excel.Word等文件,一般也就是可以分为图片附件和其他附件了,图片附件可以进行裁剪管理.多个图片上传管理,及图片预览操作 ...

  8. react-native 签名

    完成项目时,我们需要将项目打包成一个apk,方便测试以及发布版本. 这时,需要把js代码和图片资源都放进apk中, 并且发布版本还需要签名,今天把这一系列操作记录下来. 一.生成离线bundle包 离 ...

  9. EXPECT交互式批量上传公钥

    EXPECT交互式批量上传公钥 # vim key.sh #/bin/bash Public_Key() { [ ! -f /usr/bin/expect ] && yum insta ...

  10. layer弹窗动态改变标题

    1.利用layer弹出iframe层(type=2) 1 function ShowKJCX(results) { 2 ly = layer.open({ 3 type: 2, 4 id:" ...