为 aws-alb-ingress-controller 设置 ALB 的 DNS 名称



我正在用AWS实现一个入口控制器,并遵循本教程。

当创建如图所示的入口时,应该给出一个主机名。

spec:
rules:
- host: echoserver.example.com #How to let kubernate assign ALB's DNS name and not give our own DNS name.
http:
paths:
- path: /
backend:
serviceName: echoserver
servicePort: 80

但我想给ALB生成的DNS名称,因为我没有自己的DNS名称。有什么办法吗?我尝试提交主机属性。但是当我在上面提到的教程(第13节(中描述运行的入口时

kubectl describe ing -n echoserver echoserver  

上述命令响应中的Address值为空,因此无法命中入口。

更新

我创建了一个ALB(通过aws UI,并允许将请求转发到默认创建的目标组(,并将其DNS名称设置为ingress yaml文件中的主机名(用简单字母表示(。但我看不出它有效。我遵循上面教程中提到的步骤。

kubectl日志-n kube系统\$(kubectl获取po-n kube系统|\egrp-o alb进入[a-zA-Z0-9-]+(|\egrp-o'\[ALB-INGRESS.*$'

当执行上述日志命令时,仅返回以下输出:

[ALB-INGRESS][controller][INFO]:日志级别读取为",默认为INFO。若要更改,请将LOG_LEVEL环境变量设置为WARN、ERROR或DEBUG。[ALB-INGRESS][controller][INFO]:入口类设置为ALB[ALB-INGRESS][controller][INFO]:albNamePrefix未定义,默认为f0591ff6

根据步骤12,当执行日志命令时,

kubectl日志-n kube系统\$(kubectl获取po-n kube系统|\egrp-o alb进入[a-zA-Z0-9-]+(|\egrp-o'\[ALB-INGGRESS.*$'|\grep'echoserver\/echoserver'

没有任何日志。

此外,当执行以下命令时:
kubectl describe ing-n echoserver echoserver
响应为:

名称:echoserver命名空间:echoserver地址:默认后端:默认http后端:80(172.17.0.4:8080(规则:主机路径后端----------------ingress-alb-3455057285.us-east-2.elb.amazonaws.com/echoserver:80((注释:事件:

你知道哪里出了问题吗
我没有在此处设置任何IAM角色。如果需要,请告诉我该怎么做。

不可能像这样使用入口,入口需要DNS名称,因为它们需要能够路由流量。

你可以通过简单地编辑你的主机文件来解决这个问题:

my_fake_dns <ip_of_alb>

您可能想尝试使用LoadBalancer类型的服务,该服务会自动为您生成ELB(而不是ALB(或NLB。

创建一个执行以下操作的shell脚本非常容易:

  1. 描述您的AWS负载均衡器

    ELBv1

    aws elb describe-load-balancers --load-balancer-name my-load-balancer
    

    ELBv2

    aws elbv2 describe-load-balancers --load-balancer-arns arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188
    
  2. 从步骤1输出中筛选LB DNS名称:

    ELBv1

    jq '.LoadBalancerDescriptions[].DNSName'
    

    ELBv2

    jq '.LoadBalancers[].DNSName'
    
  3. 将步骤3的结果插入您的入口yaml模板文件

  4. 将步骤4中得到的YAML文件应用到集群中

相关内容

  • 没有找到相关文章

最新更新