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

Load Watcher默认端口2020无法使用,部署NodePort服务求助

解决Load Watcher部署及Metrics Server连接问题

一、先解决Metrics Server连接报错

你的核心问题是Load Watcher Pod无法访问kube-apiserver(10.96.0.1是kube-apiserver的ClusterIP),导致无法拉取Metrics Server数据,按以下步骤排查:

  • 检查Metrics Server运行状态
    执行命令查看kube-system下的Metrics Server Pod是否正常运行:

    kubectl get pods -n kube-system | grep metrics-server
    

    如果Pod状态异常,查看日志排查启动问题:

    kubectl logs -n kube-system <metrics-server-pod-name>
    

    大部分情况下,Metrics Server需要添加--kubelet-insecure-tls参数跳过kubelet的证书验证,修改其Deployment即可:

    kubectl edit deployment metrics-server -n kube-system
    

    在spec.template.spec.containers[0].args里添加--kubelet-insecure-tls,保存后等待Pod重启。

  • 验证Metrics Server API可访问性
    在集群内任意运行的Pod中(比如用busybox临时Pod)测试API:

    kubectl run -it --rm busybox --image=busybox:1.36 -- curl -k https://kubernetes.default.svc.cluster.local/apis/metrics.k8s.io/v1beta1/nodes
    

    如果能返回节点metrics数据,说明Metrics Server正常;如果不能,检查kube-apiserver是否开启了metrics API聚合层(大部分集群默认开启,若未开启需配置kube-apiserver的--enable-aggregator-routing=true参数)。

  • 检查Load Watcher的配置
    确保Load Watcher使用集群内可靠的Service DNS地址访问Metrics Server,而不是硬编码的10.96.0.1。修改Load Watcher的Deployment,添加环境变量指定Metrics Server地址:

    env:
      - name: METRICS_SERVER_URL
        value: "https://kubernetes.default.svc.cluster.local/apis/metrics.k8s.io/v1beta1"
    

    同时确认Load Watcher Pod所在Namespace没有NetworkPolicy限制访问kube-apiserver。

二、正确部署NodePort Service到2020端口

按以下步骤配置Service,确保能通过2020端口访问Load Watcher:

  1. 确认Load Watcher容器暴露的端口
    查看你的Load Watcher Deployment,确认容器内监听的端口(官方默认是8080),比如Deployment中的ports.containerPort字段。

  2. 编写NodePort Service YAML文件(命名为load-watcher-svc.yaml):

apiVersion: v1
kind: Service
metadata:
  name: load-watcher-nodeport
spec:
  type: NodePort
  selector:
    app: load-watcher  # 必须和Load Watcher Deployment的labels完全匹配
  ports:
    - port: 8080        # Service的ClusterIP端口(可自定义)
      targetPort: 8080  # 对应容器内监听的端口
      nodePort: 2020    # 指定的NodePort,需确保该端口未被集群内其他Service占用
  1. 部署Service并验证
    执行命令部署:
    kubectl apply -f load-watcher-svc.yaml
    
    查看Service状态:
    kubectl get svc load-watcher-nodeport
    
    确认NODEPORT列显示2020,之后用集群任意节点的IP访问:
    curl http://<集群节点IP>:2020/watcher
    
    注意接口路径需和Load Watcher的实际暴露路径一致(你提到的GET/WATCHER可能是大写,需调整为对应路径)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:50:40