排查托管命名空间错误

本文提供指导,帮助在 Microsoft Azure Kubernetes 服务(AKS)中使用 ManagedNamespacePreview 标志时解决错误。

先决条件

必须安装并配置以下工具:

错误 1:找不到功能

症状

尝试注册 ManagedNamespacePreview 标志时,会收到以下错误消息:

(FeatureNotFound)找不到功能“<feature_name>”。

决议

确保正确输入命令并使用正确的拼写。

若要注册此预览功能,请 as feature register 运行以下命令:

az feature register --namespace Microsoft.containerService -n ManagedNamespacePreview

错误 2 - 无法创建托管命名空间

症状

尝试创建托管命名空间时,会收到以下错误消息:

(BadRequest)托管命名空间要求注册Microsoft.ContainerService/ManagedNamespacePreview 的功能标志。

决议

此消息指示尚未注册功能标志。 如果已运行命令来注册标志,请运行以下命令 az feature show 来验证注册状态:

az feature show --namespace Microsoft.ContainerService -n ManagedNamespacePreview

错误 3:无法使用或更改某些命名空间

症状

收到以下错误消息:

命名空间名称不能与系统命名空间的名称相同。

决议

不允许用户更改某些命名空间或创建使用特定名称的托管命名空间,因为系统组件或资源使用名称。 此列表包括以下命名空间:

  • 默认
  • kube-system
  • kube-node-lease
  • kube-public
  • 看门人系统
  • cert-manager
  • calico-system
  • tigera-system
  • 应用程序路由系统
  • aks-istio-system
  • istio-system
  • dapr-system
  • 流量系统
  • prometheus-system
  • 擦除系统

错误 4 - 无法更新或删除托管命名空间

症状

无法创建、更新或删除托管命名空间。

决议

此行为是设计造成的。 如果托管群集未处于运行状态,则不允许用户创建、更新或删除托管命名空间。

错误 5:无法使用某些 kubectl 命令

症状

尝试通过 kubectl 修改托管命名空间时,会收到以下错误消息:

不允许更新资源配额 defaultresourcequota,因为该配额由 ARM 管理。 请通过 ARM API 更新此资源配额。

决议

由于托管命名空间由 Microsoft Azure 资源管理器(ARM)管理,因此通过 kubectl 命令更改其元数据(标签和注释)是受到限制的。 受影响的操作包括但不限于对以下操作对象的编辑和删除:

  • 通过 kubectl edit ns <namespace-name>kubectl delete ns <namespace name> 的托管命名空间
  • 命名空间使用 kubectl delete resourcequota defaultresourcequota --namespace <namespace-name>
  • 通过 defaultresourcequota kubectl delete resourcequota defaultresourcequota --namespace <namespace-name>
  • 默认网络策略通过 kubectl delete networkpolicy defaultnetworkpolicy --namespace <namespace-name>

必须通过 ARM API 修改命名空间,以保持与托管状态的一致性。 可以在 Azure 门户中或通过 CLI 命令管理托管命名空间。

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 对这些产品的性能和可靠性不作任何明示或默示担保。