在 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 模型并强制升级。 有关说明,请参阅强制升级

  • 发生率:通用

前端代理的证书过期

  • 适用于:此问题适用于所有版本。
  • 描述:证书过期时,指标服务器 kubectl top 可能会停止工作。
  • 修正:需要续订证书。 可以在在 Azure Stack Hub 上轮换 Kubernetes 证书一文中找到这些步骤
  • 发生率:通用

每个订阅 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 所致。 云平台使用了版本高于 Azure 资源管理器目前在 Azure Stack Hub(更新 2005)中支持的 API 版本的 API 来调用 Azure 资源管理器。
  • 修正方法:有关详细信息和缓解步骤,请参阅 AKS 引擎 GitHub 存储库(问题 3817)。 在 AKS 引擎的新版本和相应映像可用时立即升级。
  • 发生场合:删除包含持久性卷的部署时。

AKS 引擎 0.51.0 中的升级问题

  • 在将 Kubernetes 群集的 AKS 引擎从 1.15.x 版升级到 1.16.x 版期间,以下 Kubernetes 组件的升级需要额外的手动步骤:kube-proxy、azure-cni-networkmonitor、csi-secrets-store、kubernetes-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。 尽管有 GitHub 拉取请求 (PR) 引用 1.17,但它不受支持。

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

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

  • 描述:群集节点进入“未就绪”状态,并且 k8s-kern.log 文件包含消息 Memory cgroup out of memory。 此问题适用于所有 AKS 引擎版本。 若要检查系统是否出现此问题,请在 k8s-kern.log 文件中搜索字符串“Memory cgroup out of memory”。

    可以通过以下方式查找 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 大小重新创建 VM。

  • 发生场合:当群集节点所需/使用的内存超过可用内存时。

后续步骤

Azure Stack Hub 上的 AKS 引擎概述