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

Terway是阿里云基于VPC的CNI插件,提供高效率的Kubernetes容器网络。当VPC交换机IP资源不足时,会导致新创建的Pod无法获取IP。解决办法包括:新增同一可用区的交换机并配置NAT,调整Terway配置以增加资源池大小,并重启Terway Pod。在配置Terway时,需关注资源池水位设置以优化IP分配效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  • 1、Terway 网络介绍

  • 2、问题现象

  • 3、扩容操作

    • 3.1 新增交换机并配置 NAT

    • 3.2 配置集群的 Terway

    • 3.3 重启 terway

9f35322e8ddb1510d362eb8324eed45f.png

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地址

80bc3e2574b1cdc7feb5e7e92993f2bb.png

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

28f765f68c206077135c21035f641fa0.png

3.2 配置集群的 Terway

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

kubectl -n kube-system edit cm eni-config

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

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 ~

参考资料

[1]

Terway 配置参考: https://github.com/AliyunContainerService/terway/blob/main/docs/dynamic-config.md

<think>好的,用户想了解阿里云容器服务ACK集群的使用指南或常见问题。首先,我需要整理ACK的基本概念和使用场景。根据引用[1],ACK用于容器化应用的部署和管理,很多企业都在使用。接下来,使用指南应该包括集群创建、应用部署、监控运维等步骤。比如引用[4]提到使用Alibaba Cloud Toolkit进行镜像打包和上传,这部分需要详细说明。 然后是常见问题,用户可能遇到集群创建失败、节点无法连接、存储配置问题等。引用[2]提到备份服务使用OSS,所以备份配置也是常见问题之一。另外,扩缩容方面,引用[3]和[5]提到自定义指标和HPA,这部分需要解释如何实现自动扩缩容。 性能优化方面,用户可能需要了解如何优化集群性能,比如资源分配和网络配置。安全部分需要强调权限管理和镜像安全,比如RBAC和私有镜像仓库的使用。 还需要考虑用户可能对成本优化感兴趣,比如合理分配资源和使用Spot实例。同时,故障排查部分要提供日志查看和事件监控的方法,帮助用户自主解决问题。 最后,生成相关问题时要覆盖部署、监控、备份、扩缩容、安全和成本等方面,确保全面覆盖用户潜在需求。需要确保所有信息准确,并正确引用提供的资料,比如备份服务使用OSS[^2],扩缩容依赖ack-alibaba-cloud-metrics-adapter[^3]等。同时,保持回答结构清晰,分点说明,便于用户理解。</think>### 阿里云容器服务 ACK 集群使用指南 #### 一、核心功能与使用场景 1. **容器化应用管理** 支持通过 Kubernetes 原生方式部署和管理容器化应用,适用于微服务架构、DevOps 流程等场景[^1]。 2. **混合云与多云部署** 提供统一控制台管理跨地域、跨云平台的 Kubernetes 集群。 3. **AI/LLM 推理加速** 集成 NVIDIA NIM 技术,支持 GPU 资源调度优化,加速大语言模型推理任务[^3][^5]。 #### 二、快速入门步骤 1. **集群创建** ```bash # 通过阿里云控制台或 CLI 创建 ACK 集群 aliyun cs CreateCluster --name my-cluster --region cn-hangzhou ``` 注意:创建时需选择网络插件(Flannel/Terway)、节点规格等参数。 2. **应用部署** - **镜像推送** 使用 Alibaba Cloud Toolkit 插件自动打包镜像并推送至 ACR 镜像仓库[^4]: ```dockerfile FROM openjdk:11 COPY target/app.jar /app CMD ["java", "-jar", "/app.jar"] ``` - **YAML 部署示例** ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: web-app spec: replicas: 2 template: spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/my-repo/nginx:1.20 ``` 3. **运维监控** - 通过 Prometheus 监控集群指标 - 使用 **ack-alibaba-cloud-metrics-adapter** 组件实现自定义指标 HPA #### 三、常见问题解决方案 | 问题类型 | 排查步骤 | 工具/命令 | |---------|----------|-----------| | 节点不可用 | 1. 检查节点状态 `kubectl get nodes`<br>2. 查看系统日志 `journalctl -u kubelet` | kubectl, SSH | | Pod 启动失败 | 1. 检查事件 `kubectl describe pod <pod-name>`<br>2. 查看容器日志 `kubectl logs <pod-name>` | kubectl | | 存储挂载异常 | 1. 验证 PV/PVC 绑定状态<br>2. 检查 OSS 存储桶权限[^2] | CSI 插件检查工具 | #### 四、高级功能实践 1. **自动扩缩容配置** ```yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: llm-inference-hpa spec: metrics: - type: Pods pods: metric: name: gpu_utilization target: type: AverageValue averageValue: 70% ``` 注:压测期间 Pod 可自动扩容,结束后 5 分钟内缩容[^5] 2. **数据备份恢复** ```bash # 创建备份仓库(OSS) velero install --provider alibabacloud --bucket my-backup-bucket # 执行定时备份 velero schedule create daily-backup --schedule="@daily" ``` §§ 1. 如何通过 ACK 实现混合云场景下的应用统一管理? 2. 在 ACK 中使用 GPU 资源需要注意哪些配额限制? 3. ACK 集群如何与阿里云日志服务 SLS 集成? 4. 如何配置跨可用区的高可用 ACK 集群? 5. ACK Serverless 集群与传统托管集群的性能差异?[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值