gpt4 book ai didi

azure - 在单个 AKS 群集上设置内部和公共(public)工作负载

转载 作者:行者123 更新时间:2023-12-03 06:55:28 24 4
gpt4 key购买 nike

我有一个 AKS 集群。

我希望一些工作负载通过互联网公开,而其他工作负载必须只能通过特定的公共(public) IP 进行访问。

我可以想到两种可能有效的解决方案,但对我来说这两种解决方案都显得有点棘手:

  • Azure CNI的使用并将 NSG 设置为 pod 的 CNI 级别?
  • 创建内部公共(public)节点池并在 vmss 的 NIC 级别设置 NSG ?

我可以研究更好的选择吗?这两点中哪一点比另一点更好?

最佳答案

如果您需要完全的工作负载隔离,您可以考虑使用Azure CNI 并将 NSG 设置为 pod 的 CNI 级别,但您应该注意这一点

  • 分配给 AKS 节点池的子网不能是委派子网。
  • AKS 不会将网络安全组 (NSG) 应用到其子网,也不会修改与该子网关联的任何 NSG。如果您提供自己的子网并添加与该子网关联的 NSG,则必须确保 NSG 中的安全规则允许节点 CIDR 范围内的流量。
  • 使用Azure Network Policy并定义自己的虚拟网络和子网,这只有在创建 AKS 群集时才能完成。 enter image description here

Microsoft 还建议选择添加 node pool with a unique subnet实现隔离。

可以通过专用于集群中每个节点池的单独子网来支持这种隔离。这可以满足诸如具有非连续虚拟网络地址空间以跨节点池分割之类的要求。限制:

  • 分配给节点池的所有子网必须属于同一虚拟网络。
  • 系统 Pod 必须有权访问集群中的所有节点/Pod,才能提供关键功能,例如 DNS 解析和隧道 kubectl 日志/exec/端口转发代理。
  • 如果您在创建集群后扩展 VNET,则必须先更新集群,然后再添加原始 cidr 之外的子网。
  • 在 Kubernetes 版本 < 1.23.3 的集群中,kube-proxy 将对来自新子网的流量进行 SNAT,这可能会导致 Azure 网络策略丢弃数据包。
  • Windows 节点会将流量 SNAT 到新子网,直到节点池重新镜像为止。
  • 内部负载均衡器默认为节点池子网之一(通常是创建集群时节点池的第一个子网)。

另一个选择是使用 Calico Network Policies ,一个开源网络和网络安全解决方案

如果您只需要通过互联网公开一些工作负载,而其他工作负载必须只能从特定的公共(public) IP 进行访问,您可以在 AKS 中运行多个 NGINX 入口 Controller ,并使用注释 nginx.ingress.kubernetes.io/创建白名单限制白名单 enter image description here https://blog.cpolydorou.net/2022/05/running-multiple-nginx-ingress.html

关于azure - 在单个 AKS 群集上设置内部和公共(public)工作负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73023889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com