Почему цель не создается, когда я использую входной контроллер ALB в EKS?

#nginx #kubernetes #amazon-eks

#nginx #kubernetes #amazon-eks

Вопрос:

Я развернул контейнер nginx в кластере EKS. он включает в себя контроллер входа ALB, и я могу видеть, что ALB создан, и его правило также создано. Но когда я нажимаю на правило, чтобы открыть целевую группу, я вижу, что под Target вкладкой пусто, что означает, что маршрут не направляет какой-либо трафик в контейнер nginx.

Я могу видеть, что pod ( sidecar-app-6889d46d46-bns46 ) запущен:

 $ kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
sample-es-74db8bcd65-2sq5v     1/1     Running   0          4h40m
sidecar-app-6889d46d46-bns46   1/1     Running   0          4h42m
 

Служба также выглядит хорошо для меня:

 $ kubectl get service
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes             ClusterIP   10.100.0.1      <none>        443/TCP          4d5h
sample-es-entrypoint   NodePort    10.100.57.164   <none>        9200:31987/TCP   4h41m
sidecar-entrypoint     NodePort    10.100.164.72   <none>        80:31144/TCP     4h43m
 

Так в чем причина того, что цель не создается?

 apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-conf
data:
  nginx.conf: |
    user nginx;
    worker_processes  1;
    events {
      worker_connections  10240;
    }
    http {
      server {
          listen       80;
          server_name  localhost;
          location /* {
            proxy_pass  http://localhost:9200/;
        }
      }
    }
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sidecar-app
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - name: http
              containerPort: 80
          volumeMounts:
            - name: nginx-conf
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf
              readOnly: true
      volumes:
        - name: nginx-conf
          configMap:
            name: nginx-conf
            items:
              - key: nginx.conf
                path: nginx.conf

---
apiVersion: v1
kind: Service
metadata:
  name: sidecar-entrypoint
spec:
  selector:
    name: sidecar-app
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: sidecar-ingress-1
  namespace: default
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/group.name: sidecar-ingress
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/group.order: '2'
spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: sidecar-entrypoint
              servicePort: 80

 

Ответ №1:

После некоторой отладки проблема заключается в том, что метка соответствия в моей конфигурации неверна app: nginx , что должно быть name: sidecar-app

Комментарии:

1. Спасибо, также были проблемы с неправильными метками соответствия