【问题标题】:k8s service annotations not working on AWS LBk8s 服务注释在 AWS LB 上不起作用
【发布时间】:2022-02-18 17:34:56
【问题描述】:

我在 EKS 中运行一个集群,使用 k8s 1.21.5

我知道默认情况下 k8s 有一个云控制器管理器,可用于创建负载均衡器,默认情况下它将在 AWS 中创建一个经典的 LB。

我意识到 CLB 即将消失,我应该使用 NLB 或 ALB,而是安装 AWS 负载均衡器控制器,但我想弄清楚为什么我的注释不起作用。

我要做的是使用 ACM 证书设置 TLS 侦听,因为默认情况下它的所有设置为 TCP

这是我的注释

#    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:<region>:<account>:certificate/<id>
#    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
#    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: <port>

我已按照此处的 k8s 文档指定使用哪些注释 https://kubernetes.io/docs/concepts/services-networking/service/#ssl-support-on-aws

我已经在 k8s 代码中检查了这些注释是否存在

https://github.com/kubernetes/kubernetes/blob/v1.21.5/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go#L162 https://github.com/kubernetes/kubernetes/blob/v1.21.5/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go#L167 https://github.com/kubernetes/kubernetes/blob/v1.21.5/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go#L181

当我使用这些注释创建我的服务时,k8s 中的服务显示为待处理

谁能告诉我为什么它不起作用或给我任何见解? 我一直在做的是在创建 LB 后手动配置它,但我不想这样做

【问题讨论】:

  • 您的 EKS 云控制器管理器日志说什么?此外,您分配给 EKS 控制平面的角色是否有足够的权限来执行 ACM、ELB 和一堆其他事情?
  • 完全忘记了 CP 日志记录。所以刚刚启用它,我收到以下错误,无法确保负载均衡器:CertificateNotFound:找不到密钥的服务器证书:但 ARN 对我的密钥是正确的。证书和我的集群位于不同的区域是否重要?我不认为 ACM 目前在所有地区。但是我可以通过 ELB UI 手动分配相同的证书

标签: amazon-web-services kubernetes aws-load-balancer


【解决方案1】:

@congbaoguier

感谢您查看日志的建议,我完全是个傻瓜。在控制平面上启用我的日志记录后,我能够看到我的 ACM ARN 存在问题,奇怪的是我不知道我从哪里得到该 ARN,我在 ACM 中检查它是错误的 DOH

更新我的 ARN 现在它可以工作了,所以感谢您再次使用我的大脑:P

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多