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