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

带污点容忍与亲和性的K8s Pod挂载Vault CSI密钥卷失败排查

问题排查与解决:Spot实例上Vault CSI驱动无法找到Provider

以下是针对该问题的排查步骤和解决方法:

  • 检查Vault CSI驱动的调度范围
    Vault CSI驱动通常以DaemonSet形式部署,默认可能仅调度到按需节点。先确认驱动Pod是否在Spot节点上运行:

    kubectl get pods -n <vault-csi-namespace> -o wide
    

    如果没有Spot节点上的驱动Pod,需要修改DaemonSet的调度配置:

    • 添加节点亲和性,覆盖按需和Spot节点:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: eks.amazonaws.com/capacityType
                operator: In
                values:
                - ON_DEMAND
                - SPOT
      
    • 如果Spot节点带有污点(比如spot.amazonaws.com/removal: NoSchedule),给DaemonSet添加对应的容忍:
      tolerations:
      - key: "spot.amazonaws.com/removal"
        operator: "Exists"
        effect: "NoSchedule"
      
  • 验证Spot节点的标签与污点
    执行kubectl describe node <spot-node-name>查看节点标签,确认存在eks.amazonaws.com/capacityType: SPOT标签,否则Pod亲和性配置可能无法正确匹配节点。同时检查节点是否有未被CSI驱动容忍的污点,这会阻止驱动Pod调度到该节点。

  • 检查CSI节点注册状态
    运行kubectl get csinode,查看Spot节点是否已注册Vault CSI驱动。如果未注册,说明驱动Pod没有在该节点上启动,需要回到第一步调整调度配置。

  • 查看Spot节点的kubelet日志
    登录Spot节点,通过kubelet日志定位具体错误:

    journalctl -u kubelet -f | grep csi
    

    日志中可能会显示无法找到CSI socket、驱动初始化失败等细节,帮助定位问题根源。

  • 验证Spot节点与Vault的网络连通性
    偶尔Spot节点的网络策略或安全组可能限制了与Vault服务的通信。在Spot节点上执行curl <vault-service-name>.<vault-namespace>.svc:8200,确认能正常访问Vault服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:15:31