了解预检检查

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

  • 当您使用 bmctl 创建或更新管理员集群、混合集群、独立集群或用户集群和节点池资源时,Anthos clusters on Bare Metal 会运行预检检查。如果检查失败,则不进行任何更改。您也可以绕过这些检查。
  • 当您将 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

只有 Anthos clusters on Bare Metal 1.7.0 及更高版本支持使用 bmctl 创建用户集群。

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

用户集群从现有管理员集群或混合集群创建。在进行任何更改之前,Anthos clusters on Bare Metal 会自动运行预检检查。您还可以在创建集群之前使用 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 命令为用户集群运行预检检查:

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f USER_CLUSTER_PREFLIGHT_CHECK_CONFIG
    

    替换以下内容:

    • ADMIN_KUBECONFIG:管理员集群 kubeconfig 文件的路径。
    • USER_CLUSTER_PREFLIGHT_CHECK_CONFIG:您在上一步中创建的预检检查 YAML 文件的路径

    例如,对于名为 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: 1.7.7
....

重新启用预检检查

您可以明确触发新一轮预检检查,以便 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 命令为集群运行预检检查:

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f CLUSTER_PREFLIGHT_CHECK_CONFIG
    

    替换以下内容:

    • ADMIN_KUBECONFIG:管理员集群 kubeconfig 文件的路径。
    • CLUSTER_PREFLIGHT_CHECK_CONFIG:您之前创建的预检检查 YAML 文件的路径

    例如,对于名为 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 会检查各种操作系统、软件和机器前提条件。

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