3

我很难使用入口控制器与 NLB 一起工作: https ://kubernetes.github.io/ingress-nginx/deploy/#network-load-balancer-nlb

甚至子网也没有在这里生效,它没有在创建 NLB 的 API 中传递我的配置:

================================
kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
    service.beta.kubernetes.io/aws-load-balancer-eip-allocations: "eipalloc- 
    07e3afcd4b7b5d644,eipalloc-0d9cb0154be5ab55d,eipalloc-0e4e5ec3df81aa3ea"
    service.beta.kubernetes.io/aws-load-balancer-subnets: "subnet- 
    061f4a497621a7179,subnet-001c2e5df9cc93960"
spec:
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
  - name: http
    port: 80
    targetPort: http
  - name: https
    port: 443
    targetPort: https
4

2 回答 2

1

因此,事实证明,这些注释将仅在 Kubernetes 之后才受支持,Kubernetes1.16即将在 AWS 上“推出”。当前支持的版本是1.15,它只是忽略那些注释......

考虑到您在这里使用的是 AWS 特定的注释 ( service.beta.kubernetes.io/aws-load-balancer-eip-allocations) - 我认为这正是它不适用于您的案例的原因。

作为一种解决方法,我建议:

  1. 创建自定义部署后脚本,在每次 Kubernetes 服务更新后重新配置新创建的 LoadBalancer。
  2. 切换到使用更传统的东西,例如 ELB 与您的容器和 AutoScaling 组(这就是我们所做的。)
  3. 设置你自己的 Kubernetes 控制器(超级难的东西,一旦 1.16 正式发布,它将完全过时并且基本上会浪费时间)。请参阅此操作方法
  4. 等待...

官方声明: https ://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html#1-16-prequisites

注释的完整列表(何时“支持” ofc): https ://github.com/kubernetes/kubernetes/blob/v1.16.0/staging/src/k8s.io/legacy-cloud-providers/aws/aws .go#L208-L211

敬请关注!:(

于 2020-04-23T09:08:41.630 回答
0

eip 分配的数量必须与子网注释中的子网数量相匹配。

service.beta.kubernetes.io/aws-load-balancer-eip-allocations: eipalloc-xyz, eipalloc-zzz

service.beta.kubernetes.io/aws-load-balancer-subnets: subnet-xxxx, mySubnet

您有 3 个分配,但只有 2 个子网。

此外,注释

service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing" 不见了。

默认情况下,这将使用“内部”方案。

我假设因为您正在分配您可能想要“面向互联网”的弹性 IP 地址。

此外,您使用的是用于“AWS 负载均衡器控制器”的注释,但您使用的是“AWS 云提供商负载均衡器控制器”

aws-load-balancer-type 的外部值是导致 AWS 负载均衡器控制器(而不是 AWS 云提供商负载均衡器控制器)创建网络负载均衡器的原因。 文档

您正在使用service.beta.kubernetes.io/aws-load-balancer-type: nlb 这意味着此答案前面提供的链接都与您的负载均衡器无关。nlb类型是“AWS 云提供商负载均衡器控制器”而不是“AWS 负载均衡器控制器”

对于“AWS 云提供商负载均衡器控制器”,所有文档参考都是this

于 2022-02-26T00:03:42.037 回答