如何在EKS中让多个Deployment共享同一Fargate实例并重命名Fargate节点
多个Deployment共享同一Fargate实例的配置方法
EKS Fargate默认每个Pod独占一个Fargate实例,要实现多Deployment共享实例,需满足以下要求并完成配置:
- 所有要共享实例的Pod必须属于同一个命名空间,且匹配同一个Fargate配置文件
- 给所有目标Deployment的Pod模板添加相同的
eks.amazonaws.com/fargate-scheduler-group注解,注解值一致的Pod会被调度到同一Fargate实例 - 所有Pod的
resources.requests资源申请总和不能超过Fargate支持的最大实例规格(16vCPU/120GB),资源不足时仍会自动创建新的Fargate实例 - 同一调度组内的Pod不要配置相同的
hostPort,避免端口冲突导致调度失败
配置示例:
apiVersion: apps/v1 kind: Deployment metadata: name: demo-deploy-1 namespace: default spec: replicas: 1 template: metadata: annotations: # 多个Deployment配置相同的注解值即可共享实例 eks.amazonaws.com/fargate-scheduler-group: shared-group-01 spec: containers: - name: nginx image: nginx:alpine resources: requests: cpu: "0.25" memory: "512Mi"
补充说明:同一调度组的Pod会共享同一个VPC IP和计算资源,计费按Fargate实例的总规格计算,而非单个Pod的资源申请值。
Fargate节点名称修改说明
EKS Fargate的节点名称是AWS托管侧自动生成的,格式为fargate-ip-<私有IP地址>.<区域>.compute.internal,不支持直接修改节点的原生名称字段,强制修改会导致节点与EKS控制面通信中断,被标记为异常后驱逐。
如果需要自定义标识用于运维筛选、监控展示,可以给Fargate节点添加自定义标签,示例命令:
kubectl label node <fargate节点名称> custom-node-alias=my-shared-fargate-node-01
后续可以通过该标签过滤节点:
kubectl get node -l custom-node-alias=my-shared-fargate-node-01
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

