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

Kubernetes中Wazuh API 55000端口外部访问连接拒绝排查

Wazuh API在Kubernetes中无法通过Service访问的问题排查与解决

问题现象

在Kubernetes集群部署Wazuh API后,无法通过Service访问55000端口,执行curl命令返回curl: (7) Failed to connect to wazuh-master port 55000: Connection refused,但直接使用Pod IP访问API可以正常返回结果。

Pod与Service状态

NAME                      READY   STATUS    RESTARTS   AGE     IP             NODE        NOMINATED NODE   READINESS GATES
wazuh-manager-worker-0    1/1     Running   0          4m47s   172.16.0.231   10.0.0.10   <none>           <none>
wazuh-master-0            1/1     Running   0          4m47s   172.16.0.230   10.0.0.10   <none>           <none>

NAME            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
wazuh-cluster   ClusterIP      None            <none>        1516/TCP                        53s
wazuh-master    ClusterIP      10.247.82.29    <none>        1515/TCP,55000/TCP              53s
wazuh-workers   LoadBalancer   10.247.70.29    <pending>     1514:32371/TCP                  53s

测试结果

  1. 通过Pod名称访问:无法解析主机
curl -u user:pass -k -X GET "https://wazuh-master-0:55000/security/user/authenticate?raw=true"
curl: (6) Could not resolve host: wazuh-master-0
  1. 通过Service名称访问:连接被拒绝
curl -u user:pass -k -X GET "https://wazuh-master:55000/security/user/authenticate?raw=true"
curl: (7) Failed to connect to wazuh-master port 55000: Connection refused
  1. 通过Pod IP访问:成功返回结果
curl -u user:pass -k -X GET "https://172.16.0.230:55000/security/user/authenticate?raw=true"
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUasfsdfgfhgsdoIEFQSSBSRVhgfhfghfghgfasasdasNUIiwibmJmIjoxNjYzMTQ3ODcxLCJleHAiOjE2NjMxNDg3NzEsInN1YiI6IndhenV

问题根源

查看wazuh-master-svc.yaml配置,发现Service的Selector标签与Pod实际标签不匹配:

apiVersion: v1
kind: Service
metadata:
  name: wazuh-master
  labels:
    app: wazuh-manager
spec:
  type: ClusterIP
  selector:
    app: wazuh-manager
    node-type: LoadBalancer  # 此处标签错误,未匹配wazuh-master-0 Pod的实际标签
  ports:
    - name: registration
      port: 1515
      targetPort: 1515
    - name: api
      port: 55000
      targetPort: 55000

Service的核心作用是通过Selector标签匹配Pod,将流量转发到对应的后端Pod上。如果Selector标签不匹配,Service会没有可用的后端Endpoint,导致外部请求被拒绝。而直接用Pod IP访问正常,说明Pod本身的API服务是正常运行的。

解决步骤

  1. 查看wazuh-master-0 Pod的实际标签
    执行命令获取Pod的标签信息:
kubectl describe pod wazuh-master-0 | grep Labels

假设返回的标签为app: wazuh-manager, node-type: master(实际以命令输出为准)。

  1. 修改Service的Selector标签
    更新wazuh-master-svc.yaml中的selector部分,使其匹配Pod的实际标签:
selector:
  app: wazuh-manager
  node-type: master  # 修改为Pod实际的node-type标签
  1. 重新应用Service配置
kubectl apply -f wazuh-master-svc.yaml
  1. 验证Service是否关联到Pod
    执行命令查看Service的Endpoints是否包含wazuh-master-0的IP:
kubectl describe service wazuh-master | grep Endpoints

如果输出包含172.16.0.230:1515,172.16.0.230:55000,说明关联成功。

  1. 重新测试Service访问
curl -u user:pass -k -X GET "https://wazuh-master:55000/security/user/authenticate?raw=true"

额外说明

  • 通过Pod名称无法解析主机:默认情况下,Pod名称的DNS解析需要在同一个Namespace内使用完整域名,格式为pod-name.namespace.svc.cluster.local,比如wazuh-master-0.default.svc.cluster.local(需替换为实际Namespace)。但这不是本次问题的核心,核心是Service的Selector不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:05:30