了解预检检查

在 Anthos clusters on Bare Metal 中,您可以针对不同的情况运行预检检查:

  • 当您使用 bmctl 创建或更新管理员集群、混合集群或独立集群和节点池资源时,Anthos clusters on Bare Metal 会运行预检检查。如果检查失败,则不进行任何更改。您也可以绕过这些检查。
  • 在使用 kubectl 命令从管理员集群或混合集群创建用户集群之前,您可以运行一组有限的预检检查。
  • 当您将 Kubernetes 资源从管理员集群或混合集群应用到用户集群时,Anthos clusters on Bare Metal 也会运行内部预检检查。这些检查会在实际应用更改以影响用户集群之前运行。如果检查失败,则不进行任何更改。您也可以绕过这些检查,或者明确运行这些检查。

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

当您使用 bmctl 命令创建管理员集群、混合集群或独立集群时,Anthos clusters on Bare Metal 会在进行任何更改之前自动运行预检检查。

检查通过后,Anthos clusters on Bare Metal 将创建集群。

忽略自动预检检查的结果

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

独立运行预检检查

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

  • 以下命令验证指定的集群配置文件,但不会尝试创建集群本身:

    bmctl check config --cluster CLUSTER_NAME

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

    bmctl check preflight --cluster CLUSTER_NAME

请注意,您无法使用 bmctl 创建用户集群(有一个预检检查防止此操作)。

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

用户集群从现有管理员集群或混合集群创建,您可以使用 kubectl 运行预检检查。根据这些检查的结果,您可以在创建用户集群之前确定是否存在错误并修复错误。

管理员集群或混合集群创建并运行后,您可以在创建用户集群之前使用 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
    
    例如,对于名为 cluster1 的管理员集群和名为 user1-preflight.yaml 的用户集群预检检查配置,命令如下:
    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig create -f user1-preflight.yaml
    
    系统会返回以下消息,其中包含预检检查的作业 ID:
    preflightcheck.baremetal.cluster.gke.io/preflightcheck-g7hfo4 created

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

    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig -n cluster-user1 get preflightchecks preflightcheck-g7hfo4
    

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

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

您将 Kubernetes 资源应用到现有管理员集群或混合集群时,Anthos clusters on Bare Metal 也会执行内部预检检查。如果任何检查失败,Anthos clusters on Bare Metal 将不会对相关节点进行任何更改,除非您已明确绕过检查

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

如需在将资源应用于现有集群时忽略内部预检检查,您需要在集群 YAML 文件中将 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: v1.6.2
....

重新启用预检检查

您可以明确触发新一轮预检检查,以便 Anthos clusters on Bare Metal 可以在预检检查成功后更新或创建新集群。

  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 指定您之前在用户集群预检检查第 1 步中创建的预检检查 YAML 文件:

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

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

    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig -n cluster-cluster1 get preflightchecks preflightcheck-g7hfo4
    

预检检查作业成功完成后,Anthos clusters on Bare Metal 会创建集群及其资源。

安装预检检查详情

在运行预检检查时,Anthos clusters on Bare Metal 会检查各种操作系统、软件和机器前提条件。

如需了解详情,请参阅安装前提条件概览