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

Kubernetes Cassandra Pod调度失败:Pending状态问题求助

解决Cassandra StatefulSet Pod Pending(PVC无绑定PV)问题

排查与修复步骤

1. 确认存储类fast的有效性

首先检查集群中是否存在状态正常的fast存储类:

kubectl get storageclasses.storage.k8s.io
  • 若输出中无fast存储类,需手动创建:
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: fast
    provisioner: k8s.io/minikube-hostpath
    reclaimPolicy: Retain
    volumeBindingMode: Immediate
    
    执行创建命令:
    kubectl apply -f storageclass.yaml
    
  • 若fast存储类存在但状态不为Available,检查provisioner配置是否为k8s.io/minikube-hostpath,或重启minikube集群尝试恢复。

2. 检查PVC的存储请求与集群能力

查看目标PVC的详细信息:

kubectl describe pvc cassandra-data-cassandra-0

重点关注Resources.Requests.Storage字段:

  • 若请求的存储容量超过minikube节点剩余磁盘空间,调整StatefulSet中volumeClaimTemplates的storage值为合理范围(如10Gi以内),重新部署。

3. 验证minikube hostpath存储目录权限

minikube的k8s.io/minikube-hostpath provisioner默认使用/tmp/hostpath-provisioner目录存储PV数据,需确保kubelet有读写权限:

minikube ssh
sudo chmod 777 /tmp/hostpath-provisioner
exit

4. 修正StatefulSet的存储配置

  • 若保留storageClassName配置:确保volumeClaimTemplates中指定的storageClassName: "fast"与集群中存在的存储类名称完全一致。
  • 若注释storageClassName:必须确保集群存在默认存储类(执行kubectl get sc查看带有(default)标记的存储类)。若无默认存储类,给fast存储类添加默认标记:
    kubectl patch storageclass fast -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    

5. 彻底清理残留资源后重新部署

删除所有相关残留资源:

kubectl delete statefulset cassandra
kubectl delete pvc cassandra-data-cassandra-0
kubectl delete pv --selector app=cassandra

重新部署Headless Service和StatefulSet。


内容的提问来源于stack exchange,提问作者Raphael10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:35:04