Anthos 错误代码参考文档

Anthos 错误消息由 APME1234 格式的错误 ID 组成,其中 1234 是唯一编号,后跟问题描述和问题解决方法建议。本文档列出了其中的每条错误消息。

APME1000 ImageAccessError

此错误表明,生成错误的组件无法在指定注册表中找到一个或多个必需映像。

请验证:

  • 所需的映像存在于 Container Registry 中。
  • 是否可从错误来源访问注册表。
  • 工作站是否有权从注册表读取和拉取。
  • 工作站具有文件 ${HOME}/.docker/config.json 并已正确配置,以访问注册表。

APME1001 InvalidRegistryInputError

--private-registry 标志值必须符合格式 hostname[:port]/repository/location,且不能以架构(例如 https://)开头。主机名不能为 localhost127.0.0.1。Kubernetes 使用该值来提取映像。

标志值示例:

  • fictional.registry.example/repository/location
  • fictional.registry.example:10443/repository/location
  • 10.200.0.2/library

APME2000 KubeContextNotFoundError

此错误表示找不到指定的 kubecontext。

请验证:

  • KUBECONFIG 文件存在。
  • 如果未指定 KUBECONFIG 环境变量,$HOME/.kube/config 文件存在。
  • KUBECONFIG 文件中存在上下文。

APME2001 UserClusterKubeconfigError

此错误表示找不到用户集群的 kubeconfig。

请验证:

  • 管理员集群中存在命名空间 cluster-CLUSTER_NAME
  • 命名空间 cluster-CLUSTER_NAME 下存在集群对象。
  • 命名空间 cluster-CLUSTER_NAME 下存在 Secret CLUSTER_NAME-kubeconfig
  • 您拥有访问上述对象所需的所有必要权限。

APME2002 ManagementCenterNotSchedulableError

此错误表示无法安排 Anthos Management Center 在集群的节点上运行。

如果管理员集群没有任何工作器节点,并且出于安全原因,集群默认不在控制层面节点上安排工作负载,则通常会发生此错误。

要解决此问题,请按以下步骤操作:

  1. [首选] 将管理员 NodePool 添加到管理员集群。

    KUBECONFIG=${ADMIN_KUBECONFIG} kubectl apply -f <path/to/example-nodepool.yaml>
    

    示例 YAML:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-admin
    spec:
      clusterName: admin
      nodes:
      - address: <IP address of the worker node machine. e.g. 10.200.0.4>
    
  2. 从控制层面节点中移除控制层面污点,以便非系统工作负载可以在控制层面节点上运行。

    注意:请考虑此解决方案的缺点:

    • 控制层面可用性:运行额外工作负载会增加控制层面节点上的熵。如果机器资源受限、配置错误或工作负载具有意外行为,则可能会对 Kubernetes API 服务器产生负面影响。

    • 安全:容器不是强安全边界。如果恶意工作负载从容器中逃逸,则可能会获得集群控制平面的控制权。如果集群管理其他用户集群,则攻击者可能会访问管理员集群中的凭据,并也会获得用户集群的控制权。

    • 费用:只要 node-role.kubernetes.io/master:NoSchedule 污点存在,Anthos 就不会对控制层面节点收费。移除污点并允许用户工作负载在控制层面节点上运行后,会像任何其他节点一样向这些节点收费。如需了解详细的价格信息,请参阅价格页面

    允许工作负载在所有控制层面节点上运行的示例命令:

    KUBECONFIG=${ADMIN_KUBECONFIG} kubectl taint nodes --all node-role.kubernetes.io/master:NoSchedule-
    

APME2003 AdminClusterNotUpgradedError

此错误表示必须先升级管理员集群,然后才能升级 Management Center。

新版 Anthos 中的 Management Center 可能需要在新版本的管理员集群上运行。

更新管理员集群配置文件,并运行 actl clusters baremetal upgrade admin 命令以完成升级。如需了解详细说明,请参阅升级管理员集群

APME3000 AISLoginClientValidationError

在 Anthos 1.9 中已弃用

APME3001 PermissionDeniedError

该错误指出没有足够的权限来执行该操作。

要进一步排查问题,请执行以下操作:

  • 识别已分配的角色。

    • 方法 1:使用 Anthos Management Center Console
      • 打开 Management Center 的 Identity and Access 标签页。
      • 转到 Identity and Access 屏幕中的 Access 标签页以查看已分配的角色。
    • 方法 2:使用 kubectl 命令:
    kubectl get
        rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range
        .items[?(@.subjects[0].name=="{your
        account}")]}[{.roleRef.kind},{.roleRef.name}]{end}'
    
    Example: kubectl get rolebinding,clusterrolebinding --all-namespaces -o
    jsonpath='{range
    .items[?(@.subjects[0].name=="foo@bar.com")]}[{.roleRef.kind},{.roleRef.name}]{end}'
    [ClusterRole,anthos-platform-admin-read-only]
    
  • 请参阅预设授权角色和权限,以查看可用于预设授权角色的权限。

  • 如果分配了具有较低权限的角色,而执行某项操作需要具有更高权限的角色,或者如果角色分配有误,请让管理员检查是否可以授予访问权限。

  • 如果角色有足够的权限,可按预授权角色和权限操作并且 APME3001-PermissionDeniedError 显示不正确,请在以下位置报告错误:anthos-private-mode-feedback@google.com

APME3002 AuthMethodPreflightCheckError

该错误指出提供的身份验证方法设置无法通过预检检查。

如果您提供了 OIDC 设置:

  • 仔细检查 OIDC 提供商的网址是否正确。
  • 确保 OpenID 配置发现页面 https://<your OIDC provider URL>/.well-known/openid-configuration 可供访问且包含有效配置。
  • 如果您的 OIDC 提供商使用自签名 SSL 证书,请务必将该证书输入 OIDC 提供商证书字段。

APME3003 UserCredentialNotFoundError

该错误指出没有用户凭据则无法执行请求的操作。

为了执行该请求,请启用身份验证或让您的管理员启用身份验证。如需设置 OIDC 身份验证,请参阅使用 OIDC 进行身份验证

APME4001 ObservabilityOperatorUpgradeError

此错误表示在升级可观测性组件(作为升级 Anthos 的一部分)期间发生故障。即使系统报告此错误,升级后的可观测性堆栈可能仍然会正常运行。

如需检查升级后的可观测性堆栈是否正常运行,请在 anthos-management-center 命名空间中检查 Observability 类型的 default 对象上 Installed 条件的 status

kubectl get -n anthos-management-center observability default -o jsonpath='
{.status.conditions[?(@..type=="Installed")].status}{"\n"}'

如果 statusTrue,则可观测性堆栈会继续正常运行。错误报告中列出的缓解过程是可选的。如果状态不是 True,请执行错误报告中列出的缓解过程。

后续步骤