在 Azure Stack Hub 上使用 AKS 引擎的已知问题

本文介绍 Azure Stack Hub 上的 AKS 引擎的已知问题。

服务主体(SPN)的机密过期会导致集群出现故障

  • 适用于:此问题适用于所有版本。

  • 说明:当 SPN 的机密过期时,群集将失败。 这将影响使用 AKS 引擎部署的所有 kubernetes 群集。 机密过期后,群集 将无法 正常运行。

  • 修正:若要缓解此问题,请登录到每个 kubernetes 节点,以使用新的 SPN 应用程序 ID 和未过期的机密更新 /etc/kubernetes/azure.json 配置文件。 可能需要联系 Azure Stack Hub 云作员以获取 SPN 和当前机密。 有关说明,请参阅 使用应用标识访问资源

    1. 可以在 Linux 节点上使用以下命令:

      sudo sed -i s/f072c125-c99c-4781-9e85-246b981cd52b/094b1318-baea-4584-bf9c-4a40501ce21b/1 /etc/kubernetes/azure.json
      
    2. kubelet使用以下命令重启服务:

      sudo systemctl reboot node
      

    还可以将 SPN 和机密与 API 模型一起使用,并强制升级。 有关说明,请参阅 强制升级

  • 出现次数:常见

前端代理的证书过期

每个订阅最多可包含 50 个节点的限制

  • 适用于:Azure Stack Hub、AKS 引擎(全部)
  • 说明:创建群集时,必须确保每个订阅部署的 Kubernetes 节点数不超过 50 个(控制平面和代理节点)。 在单个订阅中的所有群集中部署的总 Kubernetes 节点不应超过 50 个节点。
  • 补救措施:在订阅中使用少于 51 个节点。
  • 发生频率:尝试为每个订阅添加 50 个以上的节点时。

无法使用计算服务调整群集 VM 的大小

  • 适用于:Azure Stack Hub、AKS 引擎(全部)
  • 说明:通过计算服务调整群集 VM 的大小不适用于 AKS 引擎。 AKS 引擎在 API 模型 JSON 文件中维护群集的状态。 若要确保所需的 VM 大小反映在任何使用 AKS 引擎完成的创建、升级或缩放作中,请在执行上述任何作之前更新 API 模型。 例如,如果使用计算服务将已部署的群集上的 VM 大小更改为其他大小,则执行时 aks-engine upgrade 状态会丢失。
  • 修正:若要执行此作,请找到群集的 API 模型,更改该群集的大小,然后运行 aks-engine upgrade
  • 发生频率:尝试使用计算服务调整大小时。

AKS 引擎 0.55.0 中的磁盘分离操作失败

  • 适用于:Azure Stack Hub(更新 2005),AKS 引擎 0.55.0
  • 说明:当尝试删除包含持久性卷的部署时,删除操作会触发一系列挂载/卸载错误。 此问题是由于 AKS 引擎 v0.55.0 云提供商中的 bug 导致的。 云提供商使用的 API 版本比 Azure Stack Hub (更新 2005) 中的 Azure 资源管理器当前支持的版本要新,通过这个版本调用 Azure 资源管理器。
  • 修正:有关详细信息和缓解步骤,请参阅 AKS 引擎 GitHub 存储库(问题 3817)。 一旦 AKS 引擎的新版本和相应的映像可用,就会立即升级。
  • 发生频率:删除包含持久性卷的部署时。

AKS 引擎 0.51.0 中的升级问题

  • 在 Kubernetes 群集从版本 1.15.x 升级到 1.16.x 的 AKS 引擎期间,升级以下 Kubernetes 组件需要额外的手动步骤: kube-proxyazure-cni-networkmonitorcsi-secrets-storekubernetes-dashboard。 以下信息介绍了你可能会看到的内容以及如何解决这些问题。

    • 在连接的环境中,此问题并不明显,因为群集中没有迹象表明受影响的组件未升级。 一切似乎按预期工作。

      kubectl get pods -n kube-system
      
    • 作为解决上述每个组件的此问题的解决方法,请运行下表中 “解决方法 ”列中的命令。

      组件名称 解决方法 受影响的方案
      kube-proxy kubectl delete ds kube-proxy -n kube-system 已连接、离线
      azure-cni-networkmonitor kubectl delete ds azure-cni-networkmonitor -n kube-system 已连接、离线
      csi-secrets-store sudo sed -i s/Always/IfNotPresent/g /etc/kubernetes/addons/secrets-store-csi-driver.yaml
      kubectl delete ds csi-secrets-store -n kube-system
      已断开连接
      kubernetes-dashboard 在每个控制平面节点上运行以下命令:
      sudo sed -i s/Always/IfNotPresent/g /etc/kubernetes/addons/kubernetes-dashboard.yaml
      已断开连接
  • 此版本中不支持 Kubernetes 1.17。 尽管存在引用 1.17 的 GitHub 拉取请求(PR),但不受支持。

群集节点进入“未就绪”状态,并且 k8s-kern.log 文件中包含消息“Memory cgroup out of memory”

  • 适用于:Azure Stack Hub、AKS 引擎(全部)

  • 说明:群集节点移动到“未就绪”状态, k8s-kern.log 文件包含消息 Memory cgroup out of memory。 此问题适用于所有 AKS 引擎版本。 若要检查系统上是否发生此问题,请在 k8s-kern.log 文件中搜索字符串“内存 cgroup 内存不足”。

    可以通过以下方式找到 k8s-kern.log 文件:

    • 运行 aks-engine get-logs 并导航到 ${NODE_NAME}/var/log/k8s-kern.log,或
    • 导航到节点文件系统上的“/var/log/kern.log”。
  • 修正方法:对于控制平面节点,请增加主配置文件 VM 大小。 对于代理节点,请增加节点池 VM 大小或纵向扩展节点池。 若要纵向扩展节点池,请运行记录的 scale 命令并按照说明进行作。

    若要增加池 VM 大小,请更新 API 模型并运行 aks-engine upgrade。 删除所有 VM,并使用新的 VM 大小重新创建。

  • 出现:当群集节点所需的内存/消耗超过可用内存时。

后续步骤

Azure Stack Hub 上的 AKS 引擎概述