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

RKE部署OpenStack云控制器管理器无Pod被调度问题求助

RKE部署OpenStack云控制器管理器无Pod被调度问题求助

我看了你遇到的问题,核心是OpenStack云控制器的DaemonSet没有Pod被调度到master节点上,结合你给出的节点标签、污点(Taints)和DaemonSet配置,我觉得问题大概率出在污点容忍配置不匹配上,给你梳理下排查和解决步骤:

一、核心问题:DaemonSet的容忍度没覆盖节点的所有污点

你的master节点有两个关键污点:

node-role.kubernetes.io/controlplane=true:NoSchedule
node-role.kubernetes.io/etcd=true:NoExecute

但你使用的openstack-cloud-controller-manager-ds.yaml里的容忍配置只包含了node-role.kubernetes.io/master和node-role.kubernetes.io/control-plane(注意这里是带横杠的control-plane,而你的节点标签是不带横杠的controlplane),完全没覆盖RKE默认给master节点加上的controlplane和etcd污点,所以调度器不会把Pod调度到有这些污点的节点上。

二、解决步骤

  1. 修改DaemonSet的容忍配置
    打开openstack-cloud-controller-manager-ds.yaml,在tolerations部分新增两条容忍规则,匹配你的节点污点:
tolerations:
- key: node.cloudprovider.kubernetes.io/uninitialized
  value: "true"
  effect: NoSchedule
- key: node-role.kubernetes.io/master
  effect: NoSchedule
- key: node-role.kubernetes.io/control-plane
  effect: NoSchedule
# 新增以下两条,匹配RKE节点的污点
- key: node-role.kubernetes.io/controlplane
  effect: NoSchedule
- key: node-role.kubernetes.io/etcd
  effect: NoExecute
  1. 重新应用DaemonSet
    执行命令更新配置:
kubectl apply -f openstack-cloud-controller-manager-ds.yaml
  1. 验证调度结果
    等待片刻后查看Pod状态:
kubectl get pods -n kube-system -l k8s-app=openstack-cloud-controller-manager

三、额外注意事项

  • 确保你RKE配置里的kubelet.extra_args.cloud-provider=external是正确设置的,这个参数是使用外部云控制器的必要条件,不能省略;
  • 检查云配置的Secret是否正确挂载到Pod里(不过当前是调度问题,这个可以等Pod起来后再验证);
  • 确认节点选择器node-role.kubernetes.io/controlplane=true和节点标签完全匹配,你已经设置正确,这部分没问题。

如果修改后还是有问题,可以查看DaemonSet的事件日志进一步排查:

kubectl describe ds openstack-cloud-controller-manager -n kube-system

备注:内容来源于stack exchange,提问作者sctx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 12:38:03