在 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
运行预检检查。
按照在多集群设置中创建用户集群中的步骤创建用户集群配置文件
为新的用户集群创建命名空间。例如,如需创建名为
user1
的新用户集群,您可以创建名为cluster-user1
的命名空间。以下是用于创建命名空间的kubectl
命令,其中 ADMIN_KUBECONFIG 指定了管理员集群kubeconfig
文件的路径:kubectl --kubeconfig ADMIN_KUBECONFIG create namespace cluster-user1
将 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
使用以下结构创建新的预检检查 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.
使用
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
使用
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 可以在预检检查成功后更新或创建新集群。
使用以下内容创建新的预检检查 YAML 文件。在
namespace
和clusterName
字段中填写您正在创建的集群名称:apiVersion: baremetal.cluster.gke.io/v1 kind: PreflightCheck metadata: generateName: preflightcheck- namespace: CLUSTER_NAMESPACE spec: clusterName: CLUSTER_NAME
使用
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
使用
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 会检查各种操作系统、软件和机器前提条件。
如需了解详情,请参阅安装前提条件概览。