You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EKS Fargate中kube-system命名空间Pod无法调度到Fargate节点

问题根因

核心问题是你创建的kube-system命名空间Fargate Profile选择器配置范围过窄,无法匹配到aws-load-balancer-controller、metrics-server这类工作负载的Pod。
你当前配置的Selectors块生效规则为:仅同时满足以下两个条件的Pod,才会被Fargate调度器接管:

  • 部署在kube-system命名空间下
  • 携带标签k8s-app: kube-dns

按照这个规则,除了CoreDNS(原kube-dns组件)之外,kube-system下其他所有Pod都不符合匹配要求,调度请求不会流转到fargate-scheduler,而是由default-scheduler处理。如果你的集群没有配置EC2类型的节点组,这些Pod就会持续处于Pending状态无法调度。
相同工作负载部署到default命名空间可正常运行,是因为你为default命名空间配置的Fargate Profile没有附加标签匹配限制,只要是该命名空间下的Pod,无论携带什么标签都会被Fargate调度器识别。

修复方案

根据你的实际需求调整Fargate Profile的Selectors配置即可,可选两种调整方式:

  • 方案一:允许kube-system下所有Pod调度到Fargate
    直接移除Selectors下的Labels配置段,修改后的配置片段如下:
    Selectors:
      - Namespace: kube-system
    
  • 方案二:仅允许指定系统组件调度到Fargate
    在Selectors下追加对应工作负载的标签匹配规则,例如需要兼容kube-dns、aws-load-balancer-controller、metrics-server时,配置如下:
    Selectors:
      - Namespace: kube-system
        Labels:
          - Key: k8s-app
            Value: kube-dns
      - Namespace: kube-system
        Labels:
          - Key: app.kubernetes.io/name
            Value: aws-load-balancer-controller
      - Namespace: kube-system
        Labels:
          - Key: k8s-app
            Value: metrics-server
    
    注意不同组件的标签可能随部署版本变化,可通过kubectl get pod -n kube-system --show-labels查看实际Pod携带的标签,对应调整匹配规则即可。
配置生效验证

Fargate Profile更新完成后按以下步骤验证:

  1. 删除kube-system下原有处于Pending状态的对应工作负载Pod,触发重新调度
  2. 执行kubectl get pod -n kube-system -o wide,成功调度到Fargate的Pod会显示以fargate-开头的节点名称
  3. 执行kubectl describe pod <目标Pod名称> -n kube-system查看事件流,出现fargate-scheduler相关调度事件即代表匹配规则生效

Fargate Profile匹配规则说明:同一个Selector块内的命名空间、标签条件为AND逻辑,必须全部满足才会匹配;同一个Profile下配置的多个Selector块为OR逻辑,满足任意一个块的条件即可被Fargate接管。

内容的提问来源于stack exchange,提问作者Pavan Kumar Lekkala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 12:45:27