×

您可以使用示例 CloudFormation 模板创建的 Amazon Web Services (AWS) 上的 OpenShift Container Platform 集群中添加更多计算机器。

先决条件

  • 您已使用提供的 AWS CloudFormation 模板 在 AWS 上安装了集群。

  • 您拥有在集群安装期间用于创建计算机器的 JSON 文件和 CloudFormation 模板。如果您没有这些文件,则必须按照 安装步骤 中的说明重新创建它们。

使用 CloudFormation 模板向您的 AWS 集群添加更多计算机器

您可以使用示例 CloudFormation 模板创建的 Amazon Web Services (AWS) 上的 OpenShift Container Platform 集群中添加更多计算机器。

CloudFormation 模板创建表示一台计算机器的堆栈。您必须为每台计算机器创建一个堆栈。

如果您不使用提供的 CloudFormation 模板创建计算节点,则必须查看提供的信息并手动创建基础架构。如果您的集群未正确初始化,您可能需要联系 Red Hat 支持人员并提供您的安装日志。

先决条件
  • 您已使用 CloudFormation 模板安装了 OpenShift Container Platform 集群,并且可以访问在集群安装期间用于创建计算机器的 JSON 文件和 CloudFormation 模板。

  • 您已安装 AWS CLI。

步骤
  1. 创建另一个计算堆栈。

    1. 启动模板

      $ aws cloudformation create-stack --stack-name <name> \ (1)
           --template-body file://<template>.yaml \ (2)
           --parameters file://<parameters>.json (3)
      1 <name> 是 CloudFormation 堆栈的名称,例如 cluster-workers。如果您删除集群,则必须提供此堆栈的名称。
      2 <template> 是您保存的 CloudFormation 模板 YAML 文件的相对路径和名称。
      3 <parameters> 是 CloudFormation 参数 JSON 文件的相对路径和名称。
    2. 确认模板组件存在

      $ aws cloudformation describe-stacks --stack-name <name>
  2. 继续创建计算堆栈,直到您为集群创建足够的计算机器。

批准机器的证书签名请求

将机器添加到集群时,会为每个添加的机器生成两个待处理的证书签名请求 (CSR)。您必须确认这些 CSR 已获批准,或者必要时自行批准它们。必须先批准客户端请求,然后再批准服务器请求。

先决条件
  • 您已将机器添加到集群。

步骤
  1. 确认集群识别这些机器

    $ oc get nodes
    示例输出
    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  63m  v1.30.3
    master-1  Ready     master  63m  v1.30.3
    master-2  Ready     master  64m  v1.30.3

    输出列出了您创建的所有机器。

    在批准一些 CSR 之前,上述输出可能不包含计算节点(也称为工作节点)。

  2. 查看待处理的 CSR,并确保您看到为添加到集群的每台机器显示状态为“待处理”或“已批准”的客户端请求。

    $ oc get csr
    示例输出
    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-8b2br   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    csr-8vnps   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    ...

    在此示例中,两台机器正在加入集群。您可能会在列表中看到更多已批准的 CSR。

  3. 如果 CSR 未获批准,在您添加的所有机器的待处理 CSR 状态均为“待处理”后,请批准集群机器的 CSR。

    由于 CSR 会自动轮换,因此请在将机器添加到集群后一小时内批准您的 CSR。如果您在一小时内未批准它们,证书将轮换,并且每个节点将存在两个以上的证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 会为服务证书创建一个辅助 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则 `machine-approver` 会自动批准后续的服务证书续订请求。

    对于在未启用机器 API 的平台(例如裸机和其他用户提供的基础设施)上运行的集群,您必须实现一种自动批准 kubelet 服务证书请求 (CSR) 的方法。如果未批准请求,则 `oc exec`、`oc rsh` 和 `oc logs` 命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。任何联系 Kubelet 端点的操作都需要此证书批准到位。该方法必须监视新的 CSR,确认 CSR 是由 `system:node` 或 `system:admin` 组中的 `node-bootstrapper` 服务帐户提交的,并确认节点的身份。

    • 要单独批准它们,请对每个有效的 CSR 运行以下命令

      $ oc adm certificate approve <csr_name> (1)
      1 <csr_name> 是当前 CSR 列表中 CSR 的名称。
    • 要批准所有待处理的 CSR,请运行以下命令

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve

      在批准一些 CSR 之前,某些操作符可能无法使用。

  4. 现在您的客户端请求已获批准,您必须查看添加到集群的每台机器的服务器请求。

    $ oc get csr
    示例输出
    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-bfd72   5m26s   system:node:ip-10-0-50-126.us-east-2.compute.internal                       Pending
    csr-c57lv   5m26s   system:node:ip-10-0-95-157.us-east-2.compute.internal                       Pending
    ...
  5. 如果其余 CSR 未获批准且状态为“待处理”,请批准集群机器的 CSR。

    • 要单独批准它们,请对每个有效的 CSR 运行以下命令

      $ oc adm certificate approve <csr_name> (1)
      1 <csr_name> 是当前 CSR 列表中 CSR 的名称。
    • 要批准所有待处理的 CSR,请运行以下命令

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
  6. 批准所有客户端和服务器 CSR 后,机器将具有“就绪”状态。通过运行以下命令验证这一点

    $ oc get nodes
    示例输出
    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  73m  v1.30.3
    master-1  Ready     master  73m  v1.30.3
    master-2  Ready     master  74m  v1.30.3
    worker-0  Ready     worker  11m  v1.30.3
    worker-1  Ready     worker  11m  v1.30.3

    批准服务器 CSR 后,机器可能需要几分钟才能转换为“就绪”状态。

其他信息