等待应用的配置资源状态就绪

该功能还处于 Alpha 阶段,参考 Istio 功能状态。欢迎在 Istio 用户经验探讨区 提出您的反馈。目前这些功能仅在单控制平面低容量存储版本的集群中进行了测试。

Istio 的网格配置是声明式的,意味着您声明或修改一个配置信息不会立即生效而是随着时间慢慢应用到网格中。因此您的命令很可能在相关资源就绪之前就开始使用了网格服务。

在 Istio 1.6 及之后的版本,您可以使用 kubectl wait 命令对 Istio 应用配置更改到网格中的方式实行更好的掌控。为了实现该目的, kubectl wait 命令监控资源状态的 status 字段,该字段在 Istio 完成配置更改时会被更新。

开始之前

该功能在默认情况下是关闭的。在安装的过程中使用以下命令设置 status 的相关配置参数开启该功能,此外您还必须启用 config_distribution_tracking 参数。

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

等待资源就绪

您可以先 apply 更改的内容,然后等待完成。例如,等待下面的 virtual service,可以使用以下命令:

ZipZip

  1. $ kubectl apply -f @samples/httpbin/httpbin.yaml@
  2. $ kubectl apply -f @samples/httpbin/httpbin-gateway.yaml@
  3. $ kubectl wait --for=condition=Reconciled virtualservice/httpbin
  4. virtualservice.networking.istio.io/httpbin condition met

该命令会一直保持阻塞状态,直到 virtual service 被成功下发到网格内所有的代理中,或者命令执行超时。

当您在脚本中使用 kubectl wait 命令时,返回码 0 代表成功,非 0 代表超时状态。

关于更多用法和语法信息请参考 kubectl wait 命令。