5.8. 在非正常节点关闭后分离 CSI 卷


此功能允许容器存储接口 (CSI) 驱动程序在节点非正常关闭时自动分离卷。

5.8.1. 概述

当 kubelet 的节点关闭管理器检测到后续的节点关闭操作时,会出现一个安全的节点关闭。当 kubelet 不会检测到节点关闭操作时,会发生非正常关闭操作,这可能会因为系统或硬件故障而发生这种情况。另外,当 shutdown 命令没有触发 kubelet on Linux 使用的 Inhibitor Locks 机制时,kubelet 可能无法检测到节点关闭操作,例如,如果为该节点没有正确配置 shutdownGracePeriod 和 shutdownGracePeriodCriticalPods 详情。

通过此功能,当发生非正常节点关闭时,您可以手动在节点上添加 out-of-service 污点,以允许卷自动从节点分离。

5.8.2. 手动为自动卷分离添加 out-of-service 污点

先决条件

  • 使用 cluster-admin 权限访问集群。

流程

允许卷在非正常节点关闭后自动从节点分离:

  1. 节点检测到不健康后,关闭 worker 节点。
  2. 运行以下命令检查状态,确保节点已关闭:

    oc get node <node name> 1
    1
    <node name> = 非正常关闭节点的名称
    重要

    如果节点没有完全关闭,请不要继续污点该节点。如果节点仍处于 up 状态并且应用了污点,则可能会出现文件系统崩溃。

  3. 运行以下命令来污点对应的节点对象:

    oc adm taint node <node name> node.kubernetes.io/out-of-service=nodeshutdown:NoExecute 1
    1
    <node name> = 非正常关闭节点的名称

    应用污点后,卷将从关闭节点分离,允许将其磁盘附加到其他节点。

    Example

    生成的 YAML 文件类似如下:

    spec:
      taints:
      - effect: NoExecute
        key: node.kubernetes.io/out-of-service
        value: nodeshutdown
  4. 重启该节点。
  5. 删除污点。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.