You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AKS容器中运行可执行文件完成NetPerfTest网络性能测试

AKS容器环境适配NetPerfTest实现网络性能测试方案

整体架构设计

保留你提出的三角色逻辑,适配AKS容器特性调整部署形态:

  • 编排器:单Pod部署,挂载持久化存储,负责触发测试指令、采集两端测试数据、汇总存储结果
  • 接收端:单Pod+ClusterIP Service部署,固定集群内访问地址,负责监听测试流量、生成本端统计数据
  • 发送端:单Pod部署,和接收端同属AKS集群网络,负责按参数发送测试流量、生成本端统计数据

核心问题解决方案

1. 在AKS容器中运行NPT可执行文件

核心思路是将NPT可执行文件和依赖打包到容器镜像中,容器启动后保留常驻进程供远程调用执行测试命令,参考Dockerfile如下(以Linux版本NPT为例):

FROM ubuntu:22.04
# 安装基础依赖、ssh服务(用于远程控制容器执行命令)
RUN apt update && apt install -y openssh-server iproute2 && \
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config && \
    echo "root:NptTest2024" | chpasswd && \
    mkdir /run/sshd
# 拷贝NPT可执行文件到容器系统路径并赋予执行权限
COPY NetPerfTest /usr/local/bin/
RUN chmod +x /usr/local/bin/NetPerfTest
# 暴露ssh端口和NPT默认测试端口
EXPOSE 22 5201
# 启动sshd前台运行,保持容器存活
CMD ["/usr/sbin/sshd", "-D"]

备注:如果使用Windows版本NPT,将基础镜像替换为mcr.microsoft.com/windows/servercore:ltsc2022,配置WinRM作为远程控制协议即可。

2. 实现两个容器之间的流量发送

AKS集群内Pod默认网络互通,只需为接收端创建ClusterIP Service,发送端可直接通过Service域名访问接收端:

  • 接收端启动测试服务命令示例:NetPerfTest -s
  • 发送端发起测试命令示例:NetPerfTest -c npt-receiver-svc -t 60(其中npt-receiver-svc为接收端Service名称,集群内可自动解析)

3. 测试数据存储方案

  • 为编排器Pod挂载PersistentVolumeClaim(PVC)存储测试结果,测试完成后可通过两种方式获取数据:
    1. 直接使用kubectl cp <编排器Pod名称>:/存储路径/测试结果文件 ./本地路径拷贝到本地
    2. 在编排器中部署轻量Nginx服务,映射结果存储目录,通过ClusterIP直接访问下载

部署YAML配置示例

持久化存储PVC(用于存储测试结果)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: npt-result-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: default # 替换为你的AKS集群实际存储类名称

接收端Deployment+Service

apiVersion: apps/v1
kind: Deployment
metadata:
  name: npt-receiver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: npt-receiver
  template:
    metadata:
      labels:
        app: npt-receiver
    spec:
      containers:
      - name: npt
        image: <替换为你构建的NPT镜像地址>
        ports:
        - containerPort: 22
        - containerPort: 5201
---
apiVersion: v1
kind: Service
metadata:
  name: npt-receiver-svc
spec:
  selector:
    app: npt-receiver
  ports:
  - name: ssh
    port: 22
    targetPort: 22
  - name: npt-test
    port: 5201
    targetPort: 5201
  type: ClusterIP

发送端Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: npt-sender
spec:
  replicas: 1
  selector:
    matchLabels:
      app: npt-sender
  template:
    metadata:
      labels:
        app: npt-sender
    spec:
      containers:
      - name: npt
        image: <替换为你构建的NPT镜像地址>
        ports:
        - containerPort: 22
        - containerPort: 5201

编排器Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: npt-orchestrator
spec:
  replicas: 1
  selector:
    matchLabels:
      app: npt-orchestrator
  template:
    metadata:
      labels:
        app: npt-orchestrator
    spec:
      containers:
      - name: npt
        image: <替换为你构建的NPT镜像地址>
        volumeMounts:
        - name: result-storage
          mountPath: /npt-results
      volumes:
      - name: result-storage
        persistentVolumeClaim:
          claimName: npt-result-pvc

测试流程参考

  1. 进入编排器Pod:kubectl exec -it deployment/npt-orchestrator -- bash
  2. 远程启动接收端NPT服务:ssh root@npt-receiver-svc "NetPerfTest -s > /dev/null 2>&1 &"
  3. 远程触发发送端发起测试,生成结果文件:ssh root@npt-sender "NetPerfTest -c npt-receiver-svc -t 60 > /tmp/test_result.txt"
  4. 将测试结果拷贝到编排器持久化存储:scp root@npt-sender:/tmp/test_result.txt /npt-results/
  5. 退出容器后拷贝结果到本地:kubectl cp <编排器Pod完整名称>:/npt-results/test_result.txt ./local_test_result.txt

内容的提问来源于stack exchange,提问作者yunlee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 13:57:03