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

集群内Windows VirtualMachineInstance的NodePort无法正常工作求助

Kubevirt Windows VMI NodePort服务无法访问问题排查

问题描述

在CentOS7系统部署的K8s集群中,以Pod形式运行的Windows虚拟机实例(VirtualMachineInstance)在9092端口运行服务,配置NodePort服务(端口30000)后无法实现外部访问,已关闭Windows防火墙。

相关配置

VirtualMachineInstance配置

---
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstance
metadata:
  name: win10-vm
  labels:
    special: key
spec:
  domain:
    devices:
      interfaces:
      - name: default
        masquerade: {}
        model: virtio
      disks:
      - disk:
          bus: sata
        name: dvdisk
      - cdrom:
          bus: sata
        name: virtiocontainerdisk 
    machine:
      type: "q35"
    resources:
      requests:
        memory: 8G
  networks:
  - name: default
    pod: {} # Stock pod network
  terminationGracePeriodSeconds: 0
  volumes:
  - name: dvdisk
    dataVolume:
      name: windows-datavolume
  - name: virtiocontainerdisk
    containerDisk:
      image: quay.io/kubevirt/virtio-container-disk
status: {}

NodePort Service配置

apiVersion: v1
kind: Service
metadata:
  name: nodeport
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: nodeport
    nodePort: 30000
    port: 9092
    protocol: TCP
    targetPort: 9092
  selector:
    special: key
  type: NodePort

排查与解决步骤

  • 验证标签匹配
    执行命令检查VMI对应的Pod是否带有Service指定的标签:

    kubectl get pods -l special=key
    

    若无结果,需修正VMI的metadata.labels或Service的selector,确保两者标签一致。

  • 检查VMI内部服务监听地址
    登录Windows虚拟机,确认服务监听地址为0.0.0.0而非127.0.0.1,否则集群内无法访问该服务。

  • 测试集群内连通性
    从集群内任意Pod尝试访问VMI的Pod IP和9092端口:

    # 替换<VMI_Pod_IP>为实际的Pod IP
    kubectl exec -it <任意Pod名称> -- telnet <VMI_Pod_IP> 9092
    

    若连接失败,说明VMI内部服务未正常启动或端口未开放(即使Windows防火墙已关闭,也需确认服务本身状态)。

  • 检查NodePort服务状态
    查看Service详情,确认Endpoints字段已关联到VMI的Pod:

    kubectl describe service nodeport
    

    若Endpoints显示<none>,说明标签匹配失败,回到第一步排查。

  • 开放节点端口
    检查CentOS7节点的firewalld是否放行30000端口:

    firewall-cmd --add-port=30000/tcp --permanent
    firewall-cmd --reload
    
  • 排查Kubevirt网络组件
    查看Kubevirt控制器和处理程序的日志,确认网络配置无异常:

    kubectl logs -n kubevirt deployment/virt-controller
    kubectl logs -n kubevirt deployment/virt-handler
    
  • 验证外部网络路径
    确认访问客户端与集群节点之间无网络限制(如路由器防火墙、安全组规则),确保30000端口的流量能到达节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:30:54