Pod无法调度到可用的节点上(K8s)

一、 报错信息

完成k8s单节点部署后,创建了一个pod进行测试,后续该pod出现以下报错: 

Warning  FailedScheduling  3h7m (x3 over 3h18m)  default-scheduler  0/1 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling..

二、 原因

[root@k8s-master ~]# kubectl describe nodes k8s-master  | grep Taints   #查看node污点
Taints:             node-role.kubernetes.io/control-plane:NoSchedule

提供的污点信息中,可以看到有一个污点被添加到了节点 k8s-master 上,这个污点的键是 node-role.kubernetes.io/control-plane,它的值是 NoSchedule。这意味着,Kubernetes调度器将不会将任何新的Pod调度到这个节点上。

这个污点的主要影响有以下几点:

  1. 防止新Pod调度到该节点:由于这个节点被标记(tainted)为控制平面节点,不应该在其上调度新的Pod,以防止与现有控制平面组件发生冲突。
  2. 不影响现有Pod的运行:已经在这个节点上运行的Pod不会受到这个污点的影响,它们将继续在该节点上运行。

在单节点环境中,将节点标记为控制平面节点是有利的,因为这样可以确保该节点只用于运行控制平面组件(如API服务器、控制器管理器、Scheduler等),从而确保单节点环境的基本功能正常。

然而,这种设置也有一些潜在的风险:

  1. 单点故障:如果这个节点发生故障,整个集群可能会受到影响,因为没有任何其他节点可以接管控制平面的角色。
  2. 扩展性限制:由于这个节点被专门用于运行控制平面组件,因此在需要扩展集群容量时可能会受到限制。例如,如果你需要添加更多的工作节点,你可能需要重新配置这个节点,这可能会增加复杂性。

因此,在单节点环境中使用这种设置需要谨慎考虑其利弊和潜在风险。在生产环境中,建议使用更复杂的集群设置,例如具有多个节点和多个控制平面组件的集群。

# 解决

[root@k8s-master ~]# kubectl taint nodes k8s-master node-role.kubernetes.io/control-plane:NoSchedule-
node/k8s-master untainted


[root@k8s-master ~]# kubectl describe nodes k8s-master  | grep Taints                                
Taints:             <none> 

[root@k8s-master ~]# kubectl get pods -A
NAMESPACE      NAME                                 READY   STATUS    RESTARTS       AGE
default        nginx-deployment-7c79c4bf97-v8w8d    1/1     Running   0              3h21m

#pod状态变为Running ,报错解决完成

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SilentCodeY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值