NodePort 服务无法在 AWS 上按预期工作,可能是由于 IAM ELB 权限

NodePort services not working as expected on AWS, possibly due to IAM ELB permissions

问题

我正在尝试在我的 Kubernetes 集群中创建一个 NodePort 类型的服务,但它没有按预期工作,我怀疑它必须这样做,因为我已经禁用了 ELB 权限IAM 角色正在我的主节点上使用。我不认为 ELB 权限对 NodePort 应该很重要,但我看到一条错误消息让我想到了这一点。难道我做错了什么?这是其他人以前见过的已知问题吗?

尝试

已将 NodePort 类型的服务部署到我的集群,希望能够在任何节点的 public IP 和给定端口上访问我的服务,但我做不到。有 1 个主节点和 2 个非主节点,除主节点外,甚至没有进程绑定到端口 30095(分配的 NodePort)。通过 SSH 连接到主机并以各种方式卷曲该端口什么都不做(curl 只是挂起)。卷曲与服务关联的端点工作正常。 kubectl describe 服务提示创建负载均衡器时出现错误,但我不知道为什么会这样。

我要重申,我特别禁用了主节点使用的 IAM 角色,使其无法执行任何 ELB 操作。我不希望使用我的 Kubernetes 集群的开发人员能够在我的账户中启动 ELB,或者为此做任何会在我的账户中创建 AWS 资源的事情。

实际结果

预期结果

在卷曲服务上分配给 30095 的任何节点的外部 IP 时,卷曲端点预计会看到相同的结果。

其他详细信息:

Kubernetes 这样做是因为它假定新的 NodePort 服务以前可能是 LoadBalancer 服务,因此它可能需要清理云负载平衡器。已打开 PR 以解决此问题,但随后关闭。同时,将 master 角色的 IAM 策略切换为 elasticloadbalancing:DescribeLoadBalancers 而不是 elasticloadbalancing:* 解决了这个问题,即集群的其余部分包括 NodePort 服务工作正常,但仍然限制人们创建 ELB。