【问题标题】:Why ALB is not launching after successfully creating ingress为什么 ALB 在成功创建入口后没有启动
【发布时间】:2022-12-01 15:50:01
【问题描述】:

我正在尝试在 AWS EKS 上启动应用程序负载均衡器 (ALB)。我已经在我的集群中成功安装了应用程序负载均衡器控制器。我遵循的教程告诉我,在创建入口并应用它之后,我应该会看到在我的 AWS 中创建了一个 ALB,但我没有看到。可能是什么原因?我错过了什么吗?

我已经创建并启动了 apple-service 和 banana-service 以及它们的 pod。

这是入口 YAML。我也可以成功应用此入口,但 ALB 没有启动。

我正在使用 EKS k8s版本 1.22

kubectl -n kube-system get deployment
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
aws-load-balancer-controller   2/2     2            2           19m
coredns                        2/2     2            2           38m

kubectl get ingress
NAME                     CLASS    HOSTS             ADDRESS   PORTS   AGE
my-awesome-app-ingress   <none>   testingkarlo.ml             80      14m
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-awesome-app-ingress
  labels:
    app: my-awesome-app
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  rules:
  - host: testingkarlo.ml
    http:
      paths:
        - path: /apple
          pathType: Prefix
          backend:
            service:
              name: apple-service
              port:
                number: 5678
        - path: /banana
          pathType: Prefix
          backend:
            service:
              name: banana-service
              port:
                number: 5678

苹果.yaml

kind: Pod
apiVersion: v1
metadata:
  name: apple-app
  labels:
    app: apple
spec:
  containers:
    - name: apple-app
      image: hashicorp/http-echo
      args:
        - "-text=apple"

---

kind: Service
apiVersion: v1
metadata:
  name: apple-service
spec:
  selector:
    app: apple
  ports:
    - port: 5678 # Default port for image
      targetPort: 5678
  type: LoadBalancer

香蕉.yaml和上面类似。

在应用了 apple.yaml 和 banana.yaml 之后,两个经典的负载均衡器在 AWS 上线了。

【问题讨论】:

  • 控制器 pod 日志中是否有任何错误?
  • @HarshManvar 不。
  • 您的服务必须是“ClusterIP”类型,而不是“LoadBalancer”。这就是为什么有两个 LB。您安装了哪个版本的 AWS 负载均衡器控制器?较新的版本应该为入口创建 ALB,为“LoadBalancer”类型的服务创建 NLB。

标签: amazon-web-services kubernetes kubernetes-ingress amazon-eks aws-application-load-balancer


【解决方案1】:

看来问题出在 Ingress 资源的配置上。 kubernetes.io/ingress.class 注释缺少值 alb,这是 AWS ALB Ingress 控制器识别 Ingress 资源并创建 ALB 所必需的。

这是更正后的 Ingress 资源:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-awesome-app-ingress
  labels:
    app: my-awesome-app
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  rules:
  - host: testingkarlo.ml
    http:
      paths:
        - path: /apple
          pathType: Prefix
          backend:
            service:
              name: apple-service
              port:
                number: 5678
        - path: /banana
          pathType: Prefix
          backend:
            service:
              name: banana-service
              port:
                number: 5678

应用此更正后的 Ingress 资源后,AWS ALB Ingress 控制器应在您的 AWS 账户中创建一个 ALB。

【讨论】:

    【解决方案2】:

    你没有得到的第一件事是地址映射到你的入口。您的 alb 控制器服务有一个外部地址或者它是集群IP只要。

    当您部署 ALB 控制器时,它应该创建服务负载均衡器如果没有那么会有像kubectl get ingress这样的映射

    NAME           CLASS    HOSTS   ADDRESS                                                                   PORTS   AGE
    ingress-2048   <none>   testingkarlo.ml       k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-east-2.elb.amazonaws.com   80      2m32s
    

    您可以参考此官方 AWS 文档以了解更多信息以正确安装控制器并检查方案内部的面对或互联网面对:https://aws.amazon.com/premiumsupport/knowledge-center/eks-alb-ingress-controller-fargate/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      相关资源
      最近更新 更多