amazon-elb - EKS + NLB:`service.beta.kubernetes.io/aws-load-balancer-internal: true` 不适用于`service.beta.kubernetes.io/aws-load-balancer-type: nlb`
问题描述
我有一个 EKS Kubernetes 1.16.x。具有三个标记为的公共子网kubernetes.io/role/elb: 1
和三个标记为的私有子网的集群kubernetes.io/role/internal-elb: 1
我正在尝试创建一个内部 NLB LoadBalancer 服务。在内部,我希望它托管在三个私有子网上,而不是三个公共子网上。
我正在关注https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html上的文档
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-internal: true
name: grafana-nlb
namespace: prometheus
spec:
ports:
- name: service
port: 80
protocol: TCP
targetPort: 3000
selector:
app.kubernetes.io/instance: prom
app.kubernetes.io/name: grafana
type: LoadBalancer
如果我省略service.beta.kubernetes.io/aws-load-balancer-internal: true
注释,一切似乎都可以完美运行,并且完全符合我的预期。我得到一个仅托管在三个公共子网上的公共 NLB。我可以通过带有aws elbv2 describe-load-balancers
, with "Scheme": "internet-facing"
,的 AWS cli 看到这一点"Type": "network",
。
如果使用service.beta.kubernetes.io/aws-load-balancer-internal: true
注释创建它,我会得到一个经典的 ELB 而不是 NLB,它仍然是公开的。它"Scheme": "internet-facing"
仅拥有并托管在三个公共子网上。使用 CLI,我可以看到负载均衡器,aws elb describe-load-balancers
但看不到aws elbv2 describe-load-balancers
这似乎是破碎的行为。关于如何排除故障或继续进行的任何提示?
解决方案
true
需要在 yaml 中引用"true"
。
这有效:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
这会导致我遇到的错误:
service.beta.kubernetes.io/aws-load-balancer-internal: true
推荐阅读
- aws-lambda - 为什么我在本地运行笔记本时可以导入 LambdaStep,但在 Sagemaker Studio 中运行时却不能?
- linux - 当我使用 link() 系统调用时,在 UNIX 文件系统(更具体地说,文件描述符、打开文件表和 inode)中发生了什么?
- google-play - 谷歌播放付款问题
- html - 如何在页面中插入不可选择的引号(通常在开头)?
- spring-boot - 在 Webflux 中正常关闭时 LettuceReactiveSubscription 中的取消异常
- spring-webflux - 您必须阻止 webflux 才能运行。有没有不阻塞的操作方法?
- here-api - Here.com 的交通 API 是否适用于孟买市?
- vb.net - 水晶报表在客户端机器上从服务器打印文档时得到-传递给系统调用的数据区域太小错误
- go - 如何递归遍历文件和目录
- excel - 如果单元格范围已满,则复制