从不同的 EC2 主机迁移 Pods
Migrate Pods from different EC2 hosts
我是 AWS、Kubernetes、EKS 和 AppMesh 的新手,但在以前的角色中做过 DevOps。
我正在接管一些使用 EKS 的 K8 集群,发现我们设置了 NAT 网关,这有助于将出站流量重定向为单个 IP(我们需要它用于白名单,因为第 3 方外部服务需要它)。 Pods 托管在私有子网中工作正常。
但我发现托管在 public 子网上的 Pods 只是跳过了 NAT 网关,它使用 Public DNS (IPv4) IP 地址进行出站调用,这不对我们不起作用,因为它不使用单个 NAT 网关。
所以我有几个问题:
- 我们如何将 Pods 从 Public 子网主机迁移到私有子网主机?
- 我们应该使用
nodeSelector
、Node affinity
吗?节点上的标签有效吗?
- 我不确定为什么我们在 public 子网中有节点,但我们遵循了这个指南:https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html
- 如果我们确实选择在完全私有的子网上,我们是否可以对这种映射进行例外处理,允许一些 Pods 将 HTTP 端点暴露给入口流量,同时仍在私有子网上?
- 当 Pod/Container 需要为出口流量使用 NAT 网关,然后为入口流量公开 HTTP 端点时,您建议我们如何处理?
请注意,目前我们的 EKS 默认设置为全部 public,我们是否应该转到 Public 和私有模式?
提前感谢大家的回答!
How do we migrate Pods from Public subnet Hosts to Private subnets Hosts? Should we use nodeSelector, Node affinity? Do labelings on the Nodes work?
是的。使用 Node Affinity 与使用 nodeSelector 相同。您可以通过更新用于管理 pods 的任何资源(即 Deployment、Statefulset、DaemonSet 等)来进行滚动更改。如果您下次 pods 启动时配置正确,它们将位于私有子网主机中。
I am not sure why we have Nodes in a public subnet, but we followed this guide:
https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html
指南说 public 子网,所以有一个是有道理的。
If we do choose to be on fully private subnets, can we make an exception for such mapping that we allow some Pods to have HTTP endpoints to be exposed for ingress traffic, while still on private subnets?
是的!您可以创建面向外部的负载均衡器(ALB、NLB 或 ELB)。如果您在服务定义中使用服务类型 LoadBalancer. You'll need the appropriate annotations 来获取您想要的内容,这些也可以由 Kubernetes 管理。
What do you recommend us to handle when a Pod/Container needs to use NAT gateway for egress traffic, but then exposing HTTP endpoints for ingress traffic?
使用面向外部的负载均衡器将流量转发到具有 Kubernetes 服务类型 LoadBalancer 的私有 VPC,并使用 AWS NAT Gateways 传出互联网流量。
免责声明:这只是一个建议,还有其他组合和替代方案。
我是 AWS、Kubernetes、EKS 和 AppMesh 的新手,但在以前的角色中做过 DevOps。
我正在接管一些使用 EKS 的 K8 集群,发现我们设置了 NAT 网关,这有助于将出站流量重定向为单个 IP(我们需要它用于白名单,因为第 3 方外部服务需要它)。 Pods 托管在私有子网中工作正常。
但我发现托管在 public 子网上的 Pods 只是跳过了 NAT 网关,它使用 Public DNS (IPv4) IP 地址进行出站调用,这不对我们不起作用,因为它不使用单个 NAT 网关。
所以我有几个问题:
- 我们如何将 Pods 从 Public 子网主机迁移到私有子网主机?
- 我们应该使用
nodeSelector
、Node affinity
吗?节点上的标签有效吗? - 我不确定为什么我们在 public 子网中有节点,但我们遵循了这个指南:https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html
- 如果我们确实选择在完全私有的子网上,我们是否可以对这种映射进行例外处理,允许一些 Pods 将 HTTP 端点暴露给入口流量,同时仍在私有子网上?
- 当 Pod/Container 需要为出口流量使用 NAT 网关,然后为入口流量公开 HTTP 端点时,您建议我们如何处理?
请注意,目前我们的 EKS 默认设置为全部 public,我们是否应该转到 Public 和私有模式?
提前感谢大家的回答!
How do we migrate Pods from Public subnet Hosts to Private subnets Hosts? Should we use nodeSelector, Node affinity? Do labelings on the Nodes work?
是的。使用 Node Affinity 与使用 nodeSelector 相同。您可以通过更新用于管理 pods 的任何资源(即 Deployment、Statefulset、DaemonSet 等)来进行滚动更改。如果您下次 pods 启动时配置正确,它们将位于私有子网主机中。
I am not sure why we have Nodes in a public subnet, but we followed this guide: https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html
指南说 public 子网,所以有一个是有道理的。
If we do choose to be on fully private subnets, can we make an exception for such mapping that we allow some Pods to have HTTP endpoints to be exposed for ingress traffic, while still on private subnets?
是的!您可以创建面向外部的负载均衡器(ALB、NLB 或 ELB)。如果您在服务定义中使用服务类型 LoadBalancer. You'll need the appropriate annotations 来获取您想要的内容,这些也可以由 Kubernetes 管理。
What do you recommend us to handle when a Pod/Container needs to use NAT gateway for egress traffic, but then exposing HTTP endpoints for ingress traffic?
使用面向外部的负载均衡器将流量转发到具有 Kubernetes 服务类型 LoadBalancer 的私有 VPC,并使用 AWS NAT Gateways 传出互联网流量。
免责声明:这只是一个建议,还有其他组合和替代方案。