文档首页/ 云容器引擎 CCE/ 常见问题/ 模板插件/ kube-prometheus-stack插件实例调度失败如何解决?
更新时间:2024-07-02 GMT+08:00

kube-prometheus-stack插件实例调度失败如何解决?

问题现象

安装kube-prometheus-stack插件时, 插件状态一直处于“部分就绪”,查看插件的prometheus实例事件中提示“0/x nodes are available: x node(s) had volume node affinity conflict.”。

如果选择安装grafana组件,也可能出现同样的问题。

图1 插件实例调度失败

问题原因

当出现以上报错内容,说明集群中已存在prometheus实例需要的存储卷,但该存储卷对应的云硬盘未满足与节点同一可用区的要求,导致调度失败。这可能是由于集群并非首次安装kube-prometheus-stack插件引起。

  • 首次安装kube-prometheus-stack插件时,prometheus实例会延迟绑定云硬盘类型的存储卷(PVC名为pvc-prometheus-server-0),创建该云硬盘时可用区会自动与实例运行的节点所在可用区保持一致。例如实例运行的节点可用区为可用区1,则该云硬盘的可用区也为可用区1。
  • 当集群中卸载kube-prometheus-stack插件时,prometheus实例绑定的存储卷不会被一起删除,保留了已有的监控数据。当再次安装插件时,集群的节点可能已经进行过删除新建,如果集群中不存在可用区1的节点,则会出现该问题导致prometheus实例无法运行。

如果grafana实例出现同样的问题,也可能是由于上述原因引起。

解决方案

查看集群中插件遗留的存储卷对应的云硬盘可用区,并在集群中添加该可用区的节点。

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧列表中选择“容器存储”,切换至“存储卷”页签,单击PVC(名为pvc-prometheus-server-0)对应的卷名称跳转至云硬盘详情页面。

    图2 存储卷

  3. 在基本信息中查看云硬盘的可用区。

    图3 云硬盘详情

  4. 在CCE控制台左侧列表中选择“节点管理”,单击“创建节点”,创建一个该可用区的节点。

    图4 创建指定可用区的节点

  5. 节点创建完成后,工作负载调度器会自动尝试重新调度。