【问题标题】:How to setup Kubernetes NLB Load Balancer with target group "IP" based [AWS]?如何使用基于目标组“IP”的 [AWS] 设置 Kubernetes NLB 负载均衡器?
【发布时间】:2021-01-15 19:27:53
【问题描述】:

目前,我正在使用网络负载平衡器公开 k8s 服务。它创建了一个网络负载均衡器并将目标组设置为基于实例,一切正常。据我们所知 节点中的端口始终在 30000 - 32767 范围内。

不同的目标群体存在差异。基于实例的目标组用于保留客户端IP,其中基于IP不保留客户端IP。

现在安全组有问题,我想限制节点端口只能被负载均衡器的 CIDR 访问。由于它是基于实例的目标组,因此入站 IP 始终是客户端 IP。所以很难限制某些IP的访问。

所以我的计划是将目标组切换为基于“IP”,这样我就可以将访问限制为仅针对负载均衡器的 CIDR。

还有其他方法可以创建具有基于 IP 的目标类型的 NLB 负载均衡器吗?你能帮我提些建议吗?

apiVersion: v1
kind: Service
metadata:
  name: nginx-router
  annotations:
    service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
    service.beta.kubernetes.io/do-loadbalancer-healthcheck-path: "/healthz"
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
    service.beta.kubernetes.io/aws-target-type: ip
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: [tes]

    # service.beta.kubernetes.io/healthcheck-path: /healthz
spec:
  selector:
    app: nginx-router
  externalTrafficPolicy: Local
  ports:
    - port: 80
      targetPort: 80
      protocol : TCP
      name : http
    - port : 443
      targetPort: 443
      protocol : TCP
      name : https

  type: LoadBalancer

【问题讨论】:

  • 所以你希望你的服务只能通过 nginx-router 访问(我猜可能是一个入口控制器)?所以你不希望你的其他服务暴露一个节点端口?
  • 是的,没错。目前,只有当我在节点的安全组中授予对 0.0.0.0/0 的端口访问权限时,它才有效。我想限制对端口的访问,因此只能从负载均衡器访问。

标签: amazon-web-services kubernetes kubernetes-helm kubectl kubernetes-ingress


【解决方案1】:

我问自己是否真的需要通过网络负载均衡器来解决这个问题,或者 Kubernetes 中的解决方案是否更可取。

从集群中删除 NodePort 的最简单方法是实际上不在 Kubernetes 中定义任何 NodePort 类型的服务。如果一些已经存在,您可以轻松地将它们更改为类型 ClusterIP,并且应该删除 NodePort。

由于您希望阻止对 NodePorts 的任何访问,您可以考虑使用 ResourceQuota 来阻止创建任何 NodePort 类型的服务。通过这种方式,集群告诉用户他的服务将无法工作,而不仅仅是阻止流量到达应用程序,并且如果您不知道负载均衡器配置的细节,很可能会导致难以理解的超时。 (参考这里:https://kubernetes.io/docs/concepts/policy/resource-quotas/#object-count-quota

【讨论】:

  • 感谢您尝试解决问题。该建议在我的情况下不起作用。我想通过创建网络负载均衡器并映射到我的域来公开我的应用程序。 NLB 工作正常,但我想要的是仅从负载均衡器限制实例的端口访问。但是如果目标类型是实例,由于 CIDR 范围(0.0.0.0 除外)的限制,nlb 将无法与 Kubernetes 节点通信。唯一的解决方案是通过将目标类型更改为基于 IP 来更改此行为。我很难找到那个注释。
  • 那很不幸。我让答案保留下来,也许以后访问此答案的任何人都会使用它。不幸的是,我无法为您提供任何其他帮助,因为我对 NLB 的了解充其量只是肤浅的。
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 2021-05-01
  • 2019-11-22
  • 2021-03-28
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多