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

EKS中Backend服务无法注册到ALB目标组求助

问题:EKS中Backend服务通过ALB Ingress无法正常工作,目标组显示不健康

我是Kubernetes与AWS新手,部署了三个服务:frontend、backend和auth,均为NodePort类型Service,通过AWS ALB Ingress Controller配置Ingress映射不同域名。目前frontend和auth服务正常注册到目标组,但backend始终不健康。可以通过kubectl port-forward <backend-pod> 80:80正常访问backend服务。

执行kubectl describe ingresses输出如下:

Name:             ingress
Labels:           app.kubernetes.io/managed-by=Helm
Namespace:        default
Address:          xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxx.elb.amazonaws.com
Ingress Class:    <none>
Default backend:  <default>
Rules:
Host                                  Path  Backends

----------------

domain.com
/   front-service:default-port (10.0.1.183:80,10.0.2.98:80)
back.domain.com
/   backend-service:default-port (<none>)
auth.domain.com
/   auth-service:default-port (10.0.1.30:80,10.0.1.33:80)
alb.ingress.kubernetes.io/listen-ports: [{"HTTPS":443}, {"HTTP":80}]
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/ssl-redirect: 443
kubernetes.io/ingress.class: alb

Events:
Type    Reason                  Age                   From     Message

-------------------------

Normal  SuccessfullyReconciled  8m20s (x15 over 41h)  ingress  Successfully reconciled

Frontend配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: front
  labels:
    name: front
spec:
  replicas: 2
  selector:
    matchLabels:
      name: front
  template:
    metadata:
      labels:
        name: front
    spec:
      containers:
      - name: frontend
        image:  {{ .Values.image }}
        imagePullPolicy: Always
        ports:
          - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: wrfront-{{ .Values.namespace }}-service
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    name: default-port
    protocol: TCP
  selector:
    name: front
---

Auth配置

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-wrauth-keys
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 200Gi
---
apiVersion: "v1"
kind: "ConfigMap"
metadata:
  name: "auth-config-ocpm"
  labels:
    app: "auth"
data:
  ASPNETCORE_URL: "http://+:80"
  ASPNETCORE_ENVIRONMENT: "Development"
  ASPNETCORE_LOGGINGCONSOLEDISABLECOLORS: "true"
---
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
  name: "auth"
  labels:
    app: "auth"
spec:
  replicas: 2
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: "auth"
  template:
    metadata:
      labels:
        app: "auth"
    spec:
      volumes:
        - name: auth-keys-storage
          persistentVolumeClaim:
            claimName: pvc-wrauth-keys
      containers:
        - name: "api-auth"
          image: {{ .Values.image }}
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          volumeMounts:
            - name: auth-keys-storage
              mountPath: "/app/auth-keys"
          env:
            - name: "ASPNETCORE_URL"
              valueFrom:
                configMapKeyRef:
                  key: "ASPNETCORE_URL"
                  name: "auth-config-ocpm"
            - name: "ASPNETCORE_ENVIRONMENT"
              valueFrom:
                configMapKeyRef:
                  key: "ASPNETCORE_ENVIRONMENT"
                  name: "auth-config-ocpm"
            - name: "ASPNETCORE_LOGGINGCONSOLEDISABLECOLORS"
              valueFrom:
                configMapKeyRef:
                  key: "ASPNETCORE_LOGGINGCONSOLEDISABLECOLORS"
                  name: "auth-config-ocpm"
---
apiVersion: v1
kind: Service
metadata:
  name: auth-service
spec:
  type: NodePort
  selector:
    app: auth
  ports:
  - name: default-port
    protocol: TCP
    port: 80
    targetPort: 80

Backend配置(存在问题的服务)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend
  labels:
    app: backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
    spec:
      containers:
        - name: backend
          image: {{ .Values.image }}
          imagePullPolicy: Always
          ports:
            - containerPort: 80        
---
apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  type: NodePort
  selector:
    name: backend
  ports:
  - name: default-port
    protocol: TCP
    port: 80
    targetPort: 80

Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    kubernetes.io/ingress.class: alb
    # SSL Settings
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
    alb.ingress.kubernetes.io/ssl-redirect: '443'
    alb.ingress.kubernetes.io/certificate-arn: {{ .Values.certificate }}
spec:
  rules:
    - host: {{ .Values.host }}
      http:
        paths:
          - path: /
            backend:
              service:
                name: front-service
                port:
                  name: default-port
            pathType: Prefix
    - host: back.{{ .Values.host }}
      http:
        paths:
          - path: /
            backend:
              service:
                name: backend-service
                port:
                  name: default-port
            pathType: Prefix
    - host: auth.{{ .Values.host }}
      http:
        paths:
          - path: /
            backend:
              service:
                name: auth-service
                port:
                  name: default-port
            pathType: Prefix

问题根源及修复方法

问题原因

Backend Service的标签选择器错误:Service中selector字段为name: backend,但Backend Deployment的Pod标签是app: backend,标签不匹配导致Service无法关联到Pod,因此Ingress显示后端为<none>,ALB目标组没有可注册的实例。

修复步骤

修改Backend Service的selector字段,使其与Deployment的Pod标签一致:

apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  type: NodePort
  selector:
    app: backend  # 将name改为app,匹配Pod标签
  ports:
  - name: default-port
    protocol: TCP
    port: 80
    targetPort: 80

修改后重新部署Backend Service,等待ALB目标组完成实例注册,服务即可正常通过Ingress访问。

内容的提问来源于stack exchange,提问作者Sandor Martin Leyva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:10:53