热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

ack集群Terway网络场景下的vSwitch扩容

目录1、Terway网络介绍2、问题现象3、扩容操作3.1新增交换机并配置NAT3.2配置集群的Terway3.3重启terway1、Terway网络介绍Terway是阿里云开源的

目录



  • 1、Terway网络介绍

  • 2、问题现象

  • 3、扩容操作

    • 3.1 新增交换机并配置NAT

    • 3.2 配置集群的Terway

    • 3.3 重启terway




1、Terway网络介绍

Terway是阿里云开源的基于专有网络VPC的容器网络接口CNI(Container Network Interface)插件,支持基于Kubernetes标准的网络策略来定义容器间的访问策略。可以通过使用Terway网络插件实现Kubernetes集群内部的网络互通

Terway网络插件将原生的弹性网卡分配给Pod实现Pod网络,支持基于Kubernetes标准的网络策略(Network Policy)来定义容器间的访问策略,并兼容Calico的网络策略

Terway网络插件中,每个Pod都拥有自己网络栈和IP地址。同一台ECS内的Pod之间通信,直接通过机器内部的转发,跨ECSPod通信,报文通过VPC的弹性网卡直接转发。由于不需要使用VxLAN等的隧道技术封装报文,因此Terway模式网络具有较高的通信性能

一句话总结,Terway最大的特点就是借助于云上ECS服务器的特性,将podnode的网络进行了拉平,同时使用VPCvSwitch中的ip


2、问题现象

由于使用了Terway网络模式,随着node机器和pod数量的增多,每分配一个ip出去都需要消耗掉vpcvsw的可用ip。如果某短时间业务快速增长,导致pod大量消耗可用ip,这个时候就有可能因前期规划不充足导致vSwitch的可用ip不足

这个时候新创建的pod状态为ContainerCreatingdescribe查看pod提示error allocate ip...,这个时候查看Pod所在节点的Terway的日志,会有下面内容

Message: The specified VSwitch "vsw-xxxxx" has not enough IpAddress.

提示没有足够的ip,这个时候基本都是由于交换机的ip不够用,登录到交换机的控制台可以查看到这个节点所在的交换机的可用ip数,如果很少甚至为0,就表示需要扩容了


3、扩容操作


3.1 新增交换机并配置NAT

在专有网络管理控制台对应的VPC创建新的vSwitch,该vSwitch必须与IP资源不足的vSwitch在同一个区域。这是因为Terway分配给pod ip时的策略是,分配node所在可用区中的vSwitch对应的ip,因此,扩容就需要扩容同一可用区的交换机

在初始化集群新建交换机以及扩容交换机的时候都应该考虑,因Pod密度越来越大,为了满足PodIP地址日益增长的需求,建议创建给Pod使用的vSwitch的网络位小于等于19,即每个网段中至少包含8192个可用IP地址

vSwitch创建完成后,需要对这个vSwitch配置NAT策略,以便访问外部网络


3.2 配置集群的Terway

配置集群的Terway,添加上面创建的vSwitchTerwayConfigMap配置中

kubectl -n kube-system edit cm eni-config

配置样例参考Terway配置参考,部分内容说明如下


apiVersion: v1
kind: ConfigMap
metadata:
name: eni-config
namespace: kube-system
data:
10-terway.conf: |-
{
"cniVersion": "0.3.0",
"name": "terway",
"type": "terway"
}
disable_network_policy: "true"
eni_conf: |-
{
"version": "1", # 版本
"max_pool_size": 80, # 资源池最大水位
"min_pool_size": 20, # 资源池最小水位
"credential_path": "/var/addon/token-config",
"vswitches": {"cn-shanghai-f":["vsw-AAA", "vsw-BBB"]}, # 关联的虚拟交换机(ENI多IP模式),添加vsw-BBB到VSwitches部分,其中vsw-AAA是已经存在的且IP资源不足的VSwitch
"eni_tags": {"ack.aliyun.com":"xxxxxxxxx"},
"service_cidr": "172.16.0.0/16", # 服务CIDR
"security_group": "sg-xxxxxxx", # 安全组ID
"vswitch_selection_policy": "ordered"
}

上面配置参数中,资源池水位的配置值。Terway使用底层虚拟化底层的网络资源打通容器网络,网络资源的创建和释放需要一系列的API调用,如果在Pod创建销毁时频繁调用API会导致Pod配置时间较长。 Terway通过池化的方式对资源进行缓存,当小于资源的池的最小水位时自动补充资源,在大于资源池最大水位时开始释放资源,这样保障了高效的资源利用和分配的效率

相当于预先分配了ip,具体设置可以考虑到所在机器节点规格支持的最大eni辅助网卡个数以及最大pod数灵活设置


3.3 重启terway

重启所有Terwaypod以便快速刷新缓存生效

# kubectl -n kube-system delete pod -l app=terway-eniip
# kubectl -n kube-system get pod | grep terway

重启后检查异常的pod是否正常获取了ip即可

当排查某个podip分配相关问题时,也可以通过进入到所在节点的terway pod中,执行命令行,查看当前已分配的ip情况,以及已经从vSwitch分配得来后,暂时空闲的ip情况

# terway-cli mapping
Status | Pod Name | Res ID | Factory Res ID
Normal | node-problem-detector-l5h52 | 00:16:10:48:3e:37.10.244.18.167 | 00:16:10:48:3e:37.10.244.18.167
...
Idle | | 00:16:10:48:3e:37.10.244.18.132 | 00:16:10:48:3e:37.10.244.18.132
Idle | | 00:16:10:48:3e:37.10.244.18.18 | 00:16:10:48:3e:37.10.244.18.18
Idle | | 00:16:10:48:3e:37.10.244.18.54 | 00:16:10:48:3e:37.10.244.18.54

See you ~

关注公众号加群,更多原创干货与你分享 ~



推荐阅读
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本文介绍如何在华为CE交换机上配置M-LAG(多链路聚合组),以实现CE1和CE2设备作为VLAN 10网关的高可用性。通过详细的配置步骤,确保网络冗余和稳定性。 ... [详细]
  • 配置多VLAN环境下的透明SQUID代理
    本文介绍如何在包含多个VLAN的网络环境中配置SQUID作为透明网关。网络拓扑包括Cisco 3750交换机、PANABIT防火墙和SQUID服务器,所有设备均部署在ESXi虚拟化平台上。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • SDN网络拓扑发现机制解析
    本文深入探讨了SDN(软件定义网络)中拓扑发现的原理与实现方法,重点介绍了LLDP协议在OpenFlow环境中的应用,并讨论了非OpenFlow设备存在时的链路发现策略。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 本文详细介绍了虚拟专用网(Virtual Private Network, VPN)的概念及其通过公共网络(如互联网)构建临时且安全连接的技术特点。文章探讨了不同类型的隧道协议,包括第二层和第三层隧道协议,并提供了针对IPSec、GRE以及MPLS VPN的具体配置指导。 ... [详细]
  • 本文深入探讨了MAC地址与IP地址绑定策略在网络安全中的应用及其潜在风险,同时提供了针对该策略的破解方法和相应的防御措施。 ... [详细]
  • MySQL性能测试标准倡议:老叶提出的压测基准
    进行MySQL的压力测试通常是为了评估新旧版本之间的性能差异、验证硬件升级的效果、测试参数调整的影响以及评估新业务的负载承受能力。老叶提出了一个MySQL压力测试基准值倡议,旨在促进行业内的标准化和成果共享。 ... [详细]
  • 本文探讨了局端设备与终端设备的基本概念及其在网络架构中的作用,详细分析了两者的工作原理、分类及应用场景。 ... [详细]
  • 深入理解Docker网络管理
    本文介绍了Docker网络管理的基本概念,包括为什么需要Docker网络管理以及Docker提供的多种网络驱动模式。同时,文章还详细解释了Docker网络相关的命令操作,帮助读者更好地理解和使用Docker网络功能。 ... [详细]
  • 利用RabbitMQ实现高效延迟任务处理
    本文详细探讨了如何利用RabbitMQ实现延迟任务,包括其应用场景、实现原理、系统设计以及具体的Spring Boot实现方式。 ... [详细]
author-avatar
蓝色流星魂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有