Istio 服务网格加载项次要修订升级故障排除
本文讨论Microsoft Azure Kubernetes 服务(AKS)中 Istio 服务网格加载项的次要修订升级和回滚过程的故障排除方案和限制。
注意
Istio 使用术语“revisions”来实现 Canary 升级过程并区分版本。 每个修订指定(写入为 x-y)对应于 major.minor 版本指定(x)。y)。 可以控制控制平面修订,但不能控制修订带中的特定修补程序版本。
先决条件
Kubernetes kubectl 工具或类似的工具连接到群集。 若要使用 Azure CLI 安装 kubectl,请运行 az aks install-cli 命令。
故障排除矩阵
下表列出了各种问题和这些问题的不同方案和解决方案。
场景 | 问题 | 解决方案 |
---|---|---|
数据平面工作负荷从网格中删除。 | 在完成或回滚升级之前,数据平面和控制平面修订没有对应。 | 执行以下步骤:
|
控制平面 Pod 处于挂起状态。 | Pod 缺少容量。 | 通过运行 kubectl describe 命令来验证 Pod 的状态。 如果容量是问题,可以纵向扩展群集以添加另一个节点。 有关详细信息,请参阅手动缩放 Azure Kubernetes 服务 (AKS) 群集中的节点计数。 |
az aks mesh get-upgrades 命令不返回任何可用的升级。 | 最新的 Istio 修订版可能与当前的 AKS 群集版本不兼容。 | 可以使用 az aks mesh get-revisions 命令来发现是否存在较新的 Istio 修订版。 输出包括每个 Istio 修订版的兼容群集版本列表。 因此,可以确定是否需要群集升级。 |
注意
为了避免意外的行为和损坏的功能,并确保你收到安全漏洞的更新,我们强烈建议你升级到受支持的最新 AKS 版本 和 Istio 加载项修订版。 请记住,加载项修订还应位于给定 AKS 群集支持的 Kubernetes 版本范围内。 如 Istio 升级文章的次要修订升级部分中所述,可以运行az aks mesh get-revisions
命令az aks mesh get-upgrades
来了解可用的加载项修订、升级和兼容性信息。
限制
不允许降级到较旧的修订(在 Canary 回滚进程之外)。
仅当 AKS 不再支持当前修订和下一个升级修订时,才允许从一个修订版跳过到非连续修订。 此时,唯一可用的升级是受支持的最低版本。
Istio
sidecar.istio.io/inject
标签不为 Istio 加载项启用 sidecar 注入。 在 Canary 升级期间标记命名空间并重新标记命名空间时,必须使用istio.io/rev
标签。标记必须在命名空间级别而不是按部署级别进行。 如果想要单独滚动更新 Pod,可以选择重启单个部署,而不是使用 Pod 标记。
如果使用 Istio 加载项共享 MeshConfig,则必须先将 MeshConfig 设置复制到新的 ConfigMap,然后才能进行 Canary 升级。 有关详细信息,请参阅 网格配置和升级。
Istio 加载项部署 Istio 入口网关 Pod 和每个修订版的部署。 如果要执行 Canary 升级并在群集中安装了两个控制平面修订版,则可能需要对两个修订版中的多个入口网关 Pod 进行故障排除。
参考
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 对这些产品的性能和可靠性不作任何明示或默示担保。
第三方联系人免责声明
Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。