在EKS集群中安装Apache Superset遇部署超时及Pod调度问题
问题:EKS集群安装Superset超时失败,Pod调度异常
我已经创建并配置了带ALB的EKS集群,按照Superset官方文档步骤安装Superset,使用的my-values.yaml配置如下:
ingress: enabled: true ingressClassName: ~ annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: instance # kubernetes.io/tls-acme: "true" ## Extend timeout to allow long running queries. # nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" # nginx.ingress.kubernetes.io/proxy-read-timeout: "300" # nginx.ingress.kubernetes.io/proxy-send-timeout: "300" path: / pathType: ImplementationSpecific hosts: - chart-example.local tls: [] extraHostsRaw: [] # - secretName: chart-example-tls # hosts: # - chart-example.local
执行安装命令:
helm upgrade --install --values my-values.yaml superset superset/superset --timeout 10m30s
耗时很久后返回错误:
Error: UPGRADE FAILED: post-upgrade hooks failed: 1 error occurred: * timed out waiting for the condition
查看Pod状态:
[ec2-user@ip-1**-**-**-*** ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE superset-7866fcc8b4-tcpk4 0/1 Init:0/1 8 (6m53s ago) 33m superset-init-db-6q9dp 0/1 Init:Error 0 5m24s superset-init-db-7hqz4 0/1 Init:Error 0 7m48s superset-init-db-jt87x 0/1 Init:Error 0 12m superset-init-db-rt85r 0/1 Init:Error 0 10m superset-init-db-zptz6 0/1 Init:Error 0 2m40s superset-postgresql-0 0/1 Pending 0 33m superset-redis-master-0 1/1 Running 0 33m superset-worker-748db75bf7-9kzfp 0/1 Init:0/1 8 (6m56s ago) 33m
补充说明
添加EBS CSI驱动和存储类后重新安装,Pod状态如下:
kubectl get pods NAME READY STATUS RESTARTS AGE superset-7866fcc8b4-q59nd 0/1 Init:0/1 4 (109s ago) 13m superset-init-db-gq9b9 0/1 Pending 0 13m superset-postgresql-0 0/1 Pending 0 13m superset-redis-master-0 1/1 Running 0 13m superset-worker-748db75bf7-n7t2r 0/1 Init:0/1 5 (91s ago) 13m
查看相关Pod日志:
[ec2-user@ip-172-31-23-209 ~]$ kubectl logs superset-worker-748db75bf7-n7t2r Defaulted container "superset" out of: superset, wait-for-postgres-redis (init) Error from server (BadRequest): container "superset" in pod "superset-worker-748db75bf7-n7t2r" is waiting to start: PodInitializing [ec2-user@ip-172-31-23-209 ~]$ kubectl logs superset-7866fcc8b4-q59nd Defaulted container "superset" out of: superset, wait-for-postgres (init) Error from server (BadRequest): container "superset" in pod "superset-7866fcc8b4-q59nd" is waiting to start: PodInitializing
描述superset-postgresql-0Pod的事件:
kubectl describe pod superset-postgresql-0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 4m20s (x4 over 16m) default-scheduler 0/1 nodes are available: 1 Too many pods. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.
我是Kubernetes新手,完全不知道该怎么解决,求帮助!
解决方案
1. 核心问题定位
从补充的kubectl describe输出可以明确:集群只有1个节点,且节点的Pod数量已达上限,导致新的Pod(比如postgresql、init-db)无法被调度。这是所有异常的根源:
- postgresql处于Pending状态,导致所有依赖它的Init容器(wait-for-postgres)无法完成,进而业务容器(superset、worker)无法启动
- init-db作业因为Pod无法调度或依赖的postgresql未就绪,持续失败
2. 具体修复步骤
步骤1:扩容EKS节点组
增加集群节点数量,解决Pod调度的资源瓶颈:
- 登录AWS控制台,进入EKS集群的节点组页面
- 选择对应的节点组,修改期望节点数(比如从1改成2或更多)
- 等待节点扩容完成,可用
kubectl get nodes查看新节点是否就绪
步骤2:(可选)调整节点的Pod数量上限
如果暂时不想扩容节点,可以临时调整节点的可调度Pod数量上限:
- 查看当前节点的Pod数量限制:
kubectl describe node <节点名称> | grep -A 10 "Allocatable"
- 编辑节点配置,修改
maxPods值(需要节点支持,部分EKS AMI允许调整):
kubectl edit node <节点名称>
找到status.allocatable.pods字段,修改为更大的数值(比如从20改成30),保存退出。
步骤3:清理失败的资源并重新安装
节点就绪后,先清理之前失败的Superset资源:
helm uninstall superset kubectl delete pods --all # 如果用了自定义命名空间,添加-n <命名空间>参数 kubectl delete jobs --all # 如果用了自定义命名空间,添加-n <命名空间>参数
然后重新执行安装命令:
helm upgrade --install --values my-values.yaml superset superset/superset --timeout 10m30s
步骤4:验证Init容器状态
安装过程中,查看postgresql是否成功启动:
kubectl get pods -w | grep postgresql
等postgresql的STATUS变成Running后,再看init-db和业务Pod的状态是否正常。
3. 额外优化建议
- 配置默认存储类:确保EKS集群有默认的存储类,避免StatefulSet(比如postgresql)因为找不到存储类而Pending(你已经安装了EBS CSI驱动,只需标记某个存储类为默认即可):
kubectl patch storageclass <你的存储类名称> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
- 调整Helm超时时间:如果集群资源不足,安装过程可能需要更长时间,可以把
--timeout参数调整为15m0s或更久。
内容的提问来源于stack exchange,提问作者Rohit Anil
相关产品推荐
相关产品推荐

