searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

K8S节点故障迁移

2024-08-30 09:39:32
22
0

在Kubernetes中,节点驱逐是一种管理和维护集群的重要操作,允许节点在维护、升级或者发生故障时从集群中移除,等到节点修复后,再重新承担pod调度功能。

1. 命令说明

  • cordon : 停止调度【不可调度,临时从K8S集群隔离】

该命令会将node标记为SchedulingDisabled不可调度状态,影响最小,之后K8S再创建的pod资源,不会被调度到该节点。原有的 pod 不受影响,仍正常对外提供服务。

  • drain :驱逐节点【设置不可调度,然后排干节点pod】

该命令操作,会先驱逐Node上的pod资源到其他节点重新创建,将节点调为SchedulingDisabled不可调度状态。

  • uncordon : 取消不可调度状态

 该命令可以取消节点的不可调度状态,允许新的pod再次被调度到该节点。

2. 使用场景

  • 节点维护

在进行节点维护时,需要将节点暂时移除,确保Pod能够在其他节点上继续运行。有一点要注意,在节点驱逐前,要保持集群中服务多副本,否则驱逐过程中可能会导致业务不可用。

  • 节点升级

当需要对节点进行Kubernetes版本升级或者操作系统升级时,可以使用节点驱逐来确保服务的可用性。

  • 硬件故障或维修

当节点发生硬件故障或需要维修时,可以通过节点驱逐操作将节点下的Pod迁移到其他健康的节点上。

3. 操作步骤

K8S集群,其中一个node节点发生故障,状态为notready。

[root@k8s ~]# kubectl get node
NAME                 STATUS              ROLES             AGE              VERSION
192.168.100.3     Ready                 master, node       2d              v1.20.6
192.168.100.4     Ready                 master, node       2d              v1.20.6
192.168.100.5     NotReady              node               2d              v1.20.6

故障节点标记为不可调度。

[root@k8s ~]# kubectl cordon 192.168.100.5

再查看节点状态,看到故障节点状态已经为SchedulingDisabled,新的pod将不会调度到此节点。

[root@k8s ~]# kubectl get node
NAME                 STATUS                     ROLES             AGE              VERSION
192.168.100.3     Ready                         master, node       2d              v1.20.6
192.168.100.4     Ready                         master, node       2d              v1.20.6
192.168.100.5     NotReady,SchedulingDisabled   node               2d              v1.20.6

驱逐故障节点已经运行的业务容器。

[root@k8s ~]# kubectl drain 192.168.100.5

当处理完节点问题,重新恢复为ready状态后,需要将节点恢复可调度状态,取消节点驱逐。

[root@k8s ~]# kubectl uncordon 192.168.100.5
0条评论
作者已关闭评论
王****秀
4文章数
0粉丝数
王****秀
4 文章 | 0 粉丝
王****秀
4文章数
0粉丝数
王****秀
4 文章 | 0 粉丝
原创

K8S节点故障迁移

2024-08-30 09:39:32
22
0

在Kubernetes中,节点驱逐是一种管理和维护集群的重要操作,允许节点在维护、升级或者发生故障时从集群中移除,等到节点修复后,再重新承担pod调度功能。

1. 命令说明

  • cordon : 停止调度【不可调度,临时从K8S集群隔离】

该命令会将node标记为SchedulingDisabled不可调度状态,影响最小,之后K8S再创建的pod资源,不会被调度到该节点。原有的 pod 不受影响,仍正常对外提供服务。

  • drain :驱逐节点【设置不可调度,然后排干节点pod】

该命令操作,会先驱逐Node上的pod资源到其他节点重新创建,将节点调为SchedulingDisabled不可调度状态。

  • uncordon : 取消不可调度状态

 该命令可以取消节点的不可调度状态,允许新的pod再次被调度到该节点。

2. 使用场景

  • 节点维护

在进行节点维护时,需要将节点暂时移除,确保Pod能够在其他节点上继续运行。有一点要注意,在节点驱逐前,要保持集群中服务多副本,否则驱逐过程中可能会导致业务不可用。

  • 节点升级

当需要对节点进行Kubernetes版本升级或者操作系统升级时,可以使用节点驱逐来确保服务的可用性。

  • 硬件故障或维修

当节点发生硬件故障或需要维修时,可以通过节点驱逐操作将节点下的Pod迁移到其他健康的节点上。

3. 操作步骤

K8S集群,其中一个node节点发生故障,状态为notready。

[root@k8s ~]# kubectl get node
NAME                 STATUS              ROLES             AGE              VERSION
192.168.100.3     Ready                 master, node       2d              v1.20.6
192.168.100.4     Ready                 master, node       2d              v1.20.6
192.168.100.5     NotReady              node               2d              v1.20.6

故障节点标记为不可调度。

[root@k8s ~]# kubectl cordon 192.168.100.5

再查看节点状态,看到故障节点状态已经为SchedulingDisabled,新的pod将不会调度到此节点。

[root@k8s ~]# kubectl get node
NAME                 STATUS                     ROLES             AGE              VERSION
192.168.100.3     Ready                         master, node       2d              v1.20.6
192.168.100.4     Ready                         master, node       2d              v1.20.6
192.168.100.5     NotReady,SchedulingDisabled   node               2d              v1.20.6

驱逐故障节点已经运行的业务容器。

[root@k8s ~]# kubectl drain 192.168.100.5

当处理完节点问题,重新恢复为ready状态后,需要将节点恢复可调度状态,取消节点驱逐。

[root@k8s ~]# kubectl uncordon 192.168.100.5
文章来自个人专栏
K8S故障处理
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0