14.5. 使用事件和条件诊断数据卷

使用 oc describe 命令分析并帮助解决数据卷的问题。

14.5.1. 关于条件和事件

通过检查命令生成的 ConditionsEvents 部分的输出结果来诊断数据卷的问题:

$ oc describe dv <DataVolume>

Conditions 部分会有三个 Types

  • Bound
  • Running
  • Ready

Events 部分提供以下额外信息:

  • 事件类型
  • 日志原因
  • 事件
  • 包含其他诊断信息的消息

oc describe 的输出并不总是包含 Events

StatusReasonMessage 改变时会产生一个事件。条件和事件均响应数据卷状态的变化。

例如,在导入操作中错误拼写了 URL,则导入会生成 404 信息。该消息的更改会生成一个带有原因的事件。Conditions 部分中的输出也会更新。

14.5.2. 使用条件和事件分析数据卷

通过检查 describe 命令生成的 ConditionsEvents 部分,您可以确定与 PVC相关的数据卷的状态,以及某个操作是否正在主动运行或完成。您可能还会收到信息,它们提供了有关数据卷状态的特定详情,以及如何处于当前状态。

有多种条件的组合。对每个条件组合的评估都必须其特定的环境下进行。

下面是各种组合的例子。

  • Bound - 本示例中显示一个成功绑定 PVC。

    请注意, TypeBound,所以 StatusTrue。如果 PVC 没有绑定,StatusFalse

    当 PVC 被绑定时,会生成一个事件声明 PVC 已被绑定。在本例中, ReasonBoundStatusTrueMessage 指明了哪个 PVC 拥有数据卷。

    Events 部分,Message 提供了更多详细信息,包括 PVC 被绑定的时间(Age)和它的源(From),在本例中是 datavolume-controller:

    输出示例

    Status:
    	Conditions:
    		Last Heart Beat Time:  2020-07-15T03:58:24Z
    		Last Transition Time:  2020-07-15T03:58:24Z
    		Message:               PVC win10-rootdisk Bound
    		Reason:                Bound
    		Status:                True
    		Type:                  Bound
    
    	Events:
    		Type     Reason     Age    From                   Message
    		----     ------     ----   ----                   -------
    		Normal   Bound      24s    datavolume-controller  PVC example-dv Bound

  • Running - 在本例中,请注意 TypeRunningStatusFalse。这表示发生事件导致尝试的操作失败,将 Status 从 True 改为 False

    然而,请注意 ReasonCompletedMessage 显示 Import Complete

    Events 部分,ReasonMessage 包含有关失败操作的额外故障排除信息。在这个示例中,Message 显示因为 404 无法连接,这在 Events 部分的第一个 Warning 中列出。

    根据这些信息,您认为导入操作正在运行,并为试图访问数据卷的其他操作创建竞争:

    输出示例

    Status:
    	 Conditions:
    		 Last Heart Beat Time:  2020-07-15T04:31:39Z
    		 Last Transition Time:  2020-07-15T04:31:39Z
    		 Message:               Import Complete
    		 Reason:                Completed
    		 Status:                False
    		 Type:                  Running
    
    	Events:
    		Type     Reason           Age                From                   Message
    		----     ------           ----               ----                   -------
    		Warning  Error            12s (x2 over 14s)  datavolume-controller  Unable to connect
    		to http data source: expected status code 200, got 404. Status: 404 Not Found

  • Ready - 如果 TypeReadyStatusTrue,则代表数据卷已就绪,如下例所示。如果数据卷未就绪,则 StatusFalse:

    输出示例

    Status:
    	 Conditions:
    		 Last Heart Beat Time: 2020-07-15T04:31:39Z
    		 Last Transition Time:  2020-07-15T04:31:39Z
    		 Status:                True
    		 Type:                  Ready