状态字段配置

Istio 1.6及更高版本使用资源的 status 字段提供有关配置更改在网格中传播的信息。 默认情况下,状态为禁用,可以在安装过程中使用以下命令启用状态:

$ istioctl install --set values.pilot.env.PILOT_ENABLE_STATUS=true --set values.global.istiod.enableAnalysis=true

status 字段包含资源配置的状态,其中包含各种信息性消息,包括:

  • 资源的准备情况。
  • 有多少个数据平面实例与之关联。
  • 工具输出信息,例如 istioctl analyze

例如,kubectl wait 命令监视 status 字段以确定是否取消阻止配置并继续。有关更多信息,请参见等待资源状态以应用配置.

查看 status 字段

您可以使用 kubectl get 查看资源中 status 字段的内容。 例如,要查看虚拟服务的状态,请使用以下命令:

$ kubectl get virtualservice <service-name> -o yaml

在输出结果中,status 字段包含多个嵌套字段,其中包含详细信息关于通过网格传播配置更改的过程。

status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2019-12-26T22:06:34Z"
    message: "61/122 complete"
    reason: "stillPropagating"
    status: "False"
    type: Reconciled
  - lastProbeTime: null
    lastTransitionTime: "2019-12-26T22:06:56Z"
    message: "1 Error and 1 Warning found. See validationMessages field for details"
    reason: "errorsFound"
    status: "False"
    type: PassedAnalysis
  validationMessages:
  - code: IST0101
    level: Error
    message: 'Referenced gateway not found: "bogus-gateway"'
  - code: IST0102
    level: Warn
    message: 'mTLS not enabled for virtual service'

conditions 字段

conditions 字段代表资源的可能状态。 一个 condition 的 type 字段可以具有以下值:

  • PassedAnalysis
  • Reconciled

当您应用配置时,每种类型的条件都会添加到 conditions 字段中。

Reconciled 类型条件的 status 字段被初始化为 False,以表明资源仍在分配给所有代理的过程中。

当协调完成后,状态将变为 True。 根据集群的速度,status 字段可能会立即转换为 True

PassedAnalysis 类型条件的 status 字段的值为 TrueFalse,取决于 Istio 的后台分析器是否检测到您的配置有问题。如果为 False,则将在 validationMessages 字段中详细说明问题。

PassedAnalysis 类型条件仅是一个信息字段。 它不会阻止应用无效的配置。 该状态可能表示验证失败,但是应用配置成功。 这意味着 Istio 能够设置新配置,但是该配置无效,可能是由于语法错误或类似问题。

validationMessages 字段

如果验证失败,请检查 validationMessages 字段以了解更多信息。validationMessages 字段包含有关验证过程的详细信息,例如指示 Istio 无法应用配置的错误消息,以及未导致错误的警告或参考消息。

如果类型为 PassedValidation 的条件的状态为 False,则会有 validationMessages 字段来解释该问题。 当 PassedValidation 状态为 True 时,可能会出现消息,因为这些消息是信息性消息。

有关验证消息的示例,请参见配置分析消息

这些信息有用吗?
Do you have any suggestions for improvement?

Thanks for your feedback!