首页 > 解决方案 > AWS 上的 ALB 入口控制器

问题描述

我正在尝试在 AWS-EKS 上设置 ALB 入口控制器,正如以下教程所述:ingress_controller_alb,但我无法获得入口地址。

事实上,如果我运行以下命令:kubectl get ingress/2048-ingress -n 2048-game,10 分钟后我没有得到地址。任何想法?

标签: amazon-web-serviceskubernetes-ingressamazon-eks

解决方案


问题可能出在您正在使用的 aws-controller 版本中 - 您正在使用旧版本的入口控制器 - 1.0.0,新版本是 1.1.3。

我建议您查看此文档:ingress-controller-alb

1.下载示例 ALB 入口控制器清单

wget https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.3/docs/examples/alb-ingress-controller.yaml

2.配置 ALB 入口控制器清单

至少,编辑以下变量:

--cluster-name=devCluster: name of the cluster. AWS resources will be tagged with kubernetes.io/cluster/devCluster:owned

如果控制器 pod 中的 ec2metadata 不可用,请编辑以下变量:

--aws-vpc-id=vpc-xxxxxx: vpc ID of the cluster.
--aws-region=us-west-1: AWS region of the cluster.

3.部署 RBAC 角色清单

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.3/docs/examples/rbac-role.yaml

4.部署 ALB 入口控制器清单

kubectl apply -f alb-ingress-controller.yaml

5.验证部署成功,控制器启动

kubectl logs -n kube-system $(kubectl get po -n kube-system | egrep -o "alb-ingress[a-zA-Z0-9-]+")

您应该能够显示类似于以下内容的输出:

-------------------------------------------------------------------------------
AWS ALB Ingress controller
Release:    1.0.0
Build:      git-7bc1850b
Repository: https://github.com/kubernetes-sigs/aws-alb-ingress-controller.git
-------------------------------------------------------------------------------

然后您可以部署示例应用程序

执行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.3/docs/examples/2048/2048-namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.3/docs/examples/2048/2048-deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.3/docs/examples/2048/2048-service.yaml

为 2048 游戏部署 Ingress 资源:

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.3/docs/examples/2048/2048-ingress.yaml

几秒钟后,验证 Ingress 资源是否已启用:

kubectl get ingress/2048-ingress -n 2048-game

推荐阅读