了解预检检查

本页面适用于基础架构运维者或平台管理员

在 Anthos 不公开模式下,您可以针对不同的情况运行预检检查:

  • 当您使用 actl 创建或更新管理员或用户集群和节点池资源时,Anthos 不公开模式会运行预检检查。如果检查失败,则不进行任何更改。您也可以绕过这些检查。
  • 当您将 Kubernetes 资源从管理员集群应用于用户集群时,Anthos 不公开模式会运行内部预检检查。这些检查会在实际应用更改以影响用户集群之前运行。如果检查失败,则不进行任何更改。您也可以绕过这些检查,或者明确运行这些检查。

使用 actl 创建集群时进行预检检查

当您使用 actl 命令创建管理员集群或用户集群时,Anthos 不公开模式会在进行任何更改之前自动运行预检检查。

检查通过后,Anthos 不公开模式将创建集群。

忽略自动预检检查的结果

如果要绕过这些自动预检检查,可以在命令中使用可选的 --force 标志。

独立运行预检检查

您还可以在创建集群之前运行预检检查。这有助于确保机器和节点资源通过检查,从而节省时间。

以下命令检查机器和网络是否已准备好创建集群:

actl clusters baremetal check preflight CLUSTER_NAME

为用户集群创建进行预检检查

用户集群通过现有管理员集群创建。在进行任何更改之前,Anthos 不公开模式会自动运行预检检查。您还可以在创建集群之前使用 kubectl 运行预检检查。

  1. 按照示例用户配置文件创建用户集群配置文件。

  2. 为新的用户集群创建命名空间。例如,如需创建名为 user1 的新用户集群,您可以创建名为 cluster-user1 的命名空间。以下是用于创建命名空间的 kubectl 命令,其中 ADMIN_KUBECONFIG 指定了管理员集群 kubeconfig 文件的路径:

    kubectl --kubeconfig ADMIN_KUBECONFIG create namespace cluster-user1
    

  3. 将 SSH 私钥文件以 Secret 形式上传到新的命名空间以建立凭据。下面是一个示例命令,其中 ADMIN_KUBECONFIG 指定管理员集群 kubeconfig 文件的路径,SSH_PRIVATE_KEY_FILE_PATH 指定 SSH 私钥文件的路径:

    kubectl --kubeconfig ADMIN_KUBECONFIG create secret generic ssh-key -n cluster-user1 --from-file=id_rsa=SSH_PRIVATE_KEY_FILE_PATH
    

  4. 使用以下结构创建新的预检检查 YAML 文件。在 configYAML 字段中,输入您在第 1 步中创建的用户集群配置文件的文本内容:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: PreflightCheck
    metadata:
    generateName: preflightcheck-
    namespace: cluster-user1
    spec:
    configYAML: |
    # insert user cluster config file content here.
    
  5. 以下 kubectl 命令对用户集群运行预检检查,其中 ADMIN_KUBECONFIG 指定管理员集群 kubeconfig 文件的路径,USER_CLUSTER_PREFLIGHT_CHECK_CONFIG 指定您在上一步中创建的预检检查 YAML 文件的路径:

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f USER_CLUSTER_PREFLIGHT_CHECK_CONFIG
    
    例如,对于名为 user1-preflight.yaml 的用户集群预检检查配置,命令如下所示:
    kubectl --kubeconfig ADMIN_KUBECONFIG create -f user1-preflight.yaml
    
    系统会返回以下消息,其中包含预检检查的作业 ID:
    preflightcheck.baremetal.cluster.gke.io/preflightcheck-g7hfo4 created

  6. 使用 kubectl 命令查询预检检查作业状态:

    kubectl --kubeconfig ADMIN_KUBECONFIG -n cluster-user1 get preflightchecks preflightcheck-g7hfo4
    

如果预检检查作业失败,请检查其状态,然后检查详细作业日志以查看哪些检查失败。相应地修复作业中提到的问题,然后再次运行检查。

对现有集群进行内部预检检查

当您将 Cluster Kubernetes 资源应用到现有管理员集群时,Anthos 不公开模式也会执行内部预检检查。如果任何检查失败,Anthos 不公开模式将不会对相关节点进行任何更改,除非您明确绕过检查。

应用 Kubernetes 资源时绕过预检检查

如需在将 Cluster 资源应用于现有管理员集群时忽略内部预检检查,您需要将集群资源中的 BypassPreflightCheck 字段设置为 true

以下是集群配置 YAML 文件的片段,其中 bypassPreflightCheck 字段设置为 true

# Sample cluster config to bypass preflight check errors:

apiVersion: v1
kind: Namespace
metadata:
  name: cluster-user1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: user1
  namespace: cluster-user1
spec:
  type: user
  bypassPreflightCheck: true
  # Anthos cluster version.
  anthosBareMetalVersion: 1.9.3
....

重新启用预检检查

您可以明确触发新一轮预检检查,以便 Anthos 不公开模式可以在预检检查成功后更新或创建新集群。

  1. 使用以下内容创建新的预检检查 YAML 文件。在 namespaceclusterName 字段中填写您正在创建的集群名称:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: PreflightCheck
    metadata:
    generateName: preflightcheck-
    namespace: CLUSTER_NAMESPACE
    spec:
    clusterName: CLUSTER_NAME
    

  2. 发出 kubectl 命令以运行集群的预检检查,其中 ADMIN_KUBECONFIG 指定管理员集群 kubeconfig 文件的路径,CLUSTER_PREFLIGHT_CHECK_CONFIG 指定您之前创建的预检检查 YAML 文件的路径:

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f CLUSTER_PREFLIGHT_CHECK_CONFIG
    
    例如,对于名为 user1-preflight.yaml 的用户集群预检检查配置,以下命令为:
    kubectl --kubeconfig ADMIN_KUBECONFIG create -f user1-preflight.yaml
    
    系统使用预检检查的作业 ID 进行响应:
    preflightcheck.baremetal.cluster.gke.io/preflightcheck-g7hfo4 created
    

  3. 使用 kubectl 命令查询预检检查作业状态 ID:

    kubectl --kubeconfig ADMIN_KUBECONFIG -n cluster-cluster1 get preflightchecks preflightcheck-g7hfo4
    

预检检查作业成功完成后,Anthos 不公开模式会创建集群及其资源。

安装预检检查详情

在运行预检检查时,Anthos 不公开模式会检查各种操作系统、软件和机器前提条件。

如需了解详情,请参阅要求

身份验证预检检查

出于身份验证目的,预检检查会验证 OpenID Connect (OIDC) 配置,以防止应用错误的 OIDC 配置文件。

这些检查包括使用 /.well-known/openid-configuration 上的 OIDC 发现机制 ping OIDC 端点。

后续步骤