本文提供指导,帮助在 Microsoft Azure Kubernetes 服务(AKS)中使用 ManagedNamespacePreview 标志时解决错误。
先决条件
必须安装并配置以下工具:
- Azure CLI
- kubectl,Kubernetes 命令行客户端
错误 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 对这些产品的性能和可靠性不作任何明示或默示担保。