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

通过内部NLB暴露ArgoCD时NLB目标组健康检查失败

解决ArgoCD内部NLB目标组健康检查失败问题

排查与修复步骤

1. 修正Service端口映射

ArgoCD Server默认监听的HTTP端口为8080,你当前Service配置中targetPort: 80与Pod实际端口不匹配,这是健康检查失败的常见原因。修改Service配置:

apiVersion: v1
kind: Service
metadata:
  name: argocd-server-nlb
  namespace: argocd
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
spec:
  ports:
    - port: 80
      targetPort: 8080  # 改为ArgoCD Server默认HTTP端口
      protocol: TCP
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: argocd-server

2. 确认ArgoCD Pod就绪状态

NLB会同步K8s Pod的就绪状态到目标组,先检查Pod是否正常就绪:

kubectl describe pods -n argocd -l app.kubernetes.io/name=argocd-server

查看输出中Conditions部分的Ready状态是否为True。如果Pod未就绪,优先排查ArgoCD Server启动日志,解决容器本身的问题:

kubectl logs -n argocd -l app.kubernetes.io/name=argocd-server

3. 检查安全组与网络连通性

  • 确保NLB安全组允许入站TCP 80端口流量,同时允许出站到Pod 8080端口的流量。
  • 确保EKS节点安全组允许NLB所属私有子网的IP段访问节点上的8080端口(ArgoCD Pod的暴露端口)。
  • 验证私有子网路由表:确保NLB所在子网能路由到EKS节点子网,无路由阻断。

4. 验证NLB目标组配置

AWS会自动为NLB创建目标组,检查目标组的健康检查设置:

  • 健康检查端口需设置为8080(对应Pod端口)。
  • 若使用HTTP健康检查,路径需指定为/healthz(ArgoCD Server内置的健康检查端点);若使用TCP检查,确保端口连通即可。

5. 集群内测试服务可用性

在集群内创建临时测试Pod,直接访问ArgoCD服务,确认服务本身正常:

kubectl run -it --rm test-pod --image=busybox:1.36 --restart=Never -- wget -qO- http://argocd-server.argocd.svc.cluster.local:8080/healthz

若返回ok,说明服务本身正常,问题集中在NLB或目标组的外部配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:33:01