amazon-web-services - 为什么 Kubernetes (AWS EKS) 将所有工作人员注册到负载均衡器?
问题描述
我想知道这是默认行为还是我的设置有问题。
我有 150 名工人在 Kubernetes 上运行。
我使用 nodeSelector 让一组 kubernetes 工作人员(10 个工作人员)仅运行特定部署,我为它创建了一个服务(type=LoadBalancer),当创建负载均衡器时,Kubernetes 的所有 150 个工作人员都注册到负载均衡器,虽然我期望只看到此部署/服务的这组工作人员(10 名工作人员)。
它的行为与alb-ingress-controller
和相同AWS NLB
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- port: 8080
type: LoadBalancer
和部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
selector:
matchLabels:
app: my-app
replicas: 10
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: master-api
image: private/my-app:prod
resources:
requests:
memory: 8000Mi
ports:
- containerPort: 8080
nodeSelector:
role: api
我已经被标记为 10 个工作节点,标签role=api
为 10 只运行此部署的 pod,并且没有其他工作人员正在运行此服务我也没有使用端口 8080 的其他服务或容器
解决方案
所以 ALB 控制器实际上不会检查您的标签等。它纯粹是查看子网中的标签。因此,如果您的工作节点在带有标签kubernetes.io/role/alb-ingress
或类似标签的子网内运行,则其中的所有工作节点都将添加到负载均衡器中。
我相信它是自动发现事物文档的一部分
推荐阅读
- javascript - 相机未在 React-native-qr-code-scanner 中授权
- ios - 从 WebView 中反应本机深层链接
- node.js - 安装新包时,未保存安装的 NPM 包将被删除
- azure - 用于在每个 Azure Cosmos DB 帐户中创建集合以及数据库的 PowerShell 脚本
- apache-spark - 如何让 PySpark 在 Google Cloud Dataproc 集群上运行
- java - ArrayList 从 firebase 数组适配器返回 null
- amazon-web-services - 以及用于 cfndsl 的 AWS dynamodb 中的客户属性
- android - 如何将字符发送到打印命令并将它们打印在一行中?
- java - 如何在 blogger api 中按标签获取博客文章
- shell - 我想在将一些文档上传到其他 FTP 服务器时捕获 SFTP 错误