18.9. 教程:扩展应用程序


18.9.1. 扩展

您可以使用 Horizontal Pod Autoscaler (HPA)手动或自动扩展 pod。您还可以扩展集群节点。

18.9.1.1. 手动 pod 扩展

您可以使用以下方法之一手动扩展应用程序的 pod:

  • 更改 ReplicaSet 或部署定义
  • 使用命令行
  • 使用 Web 控制台

此研讨会首先仅将一个 pod 用于微服务。通过在部署定义中定义 1 副本,Kubernetes Replication Controller 会努力保持一个 pod 处于活动状态。然后,您将了解如何使用基于负载的 Horizontal Pod Autoscaler(HPA)定义 pod 自动扩展,并在遇到高负载时扩展更多 pod。

前提条件

  • 活跃的 ROSA 集群
  • 分离 OSToy 应用程序

流程

  1. 在 OSToy 应用中,点导航菜单中的 Networking 选项卡。
  2. 在"Intra-cluster Communication"部分中,找到位于"远程 Pod"下随机更改颜色的框。在框中,您会看到微服务的容器集名称。本例中只有一个框,因为只有一个微服务容器集。

    HPA Menu
  3. 运行以下命令,确认只有一个 pod 为微服务运行:

    $ oc get pods

    输出示例

    NAME                                  READY     STATUS    RESTARTS   AGE
    ostoy-frontend-679cb85695-5cn7x       1/1       Running   0          1h
    ostoy-microservice-86b4c6f559-p594d   1/1       Running   0          1h

  4. 下载 ostoy-microservice-deployment.yaml,并将它保存到本地机器中。
  5. 使用以下示例将部署定义改为三个 pod 而不是一个:

    spec:
        selector:
          matchLabels:
            app: ostoy-microservice
        replicas: 3
  6. 运行以下命令来应用副本更改:

    $ oc apply -f ostoy-microservice-deployment.yaml
    注意

    您还可以通过进入 Workloads > Deployments > ostoy-microservice > YAML 标签页来编辑 OpenShift Web 控制台中的 ostoy-microservice- deployment.yaml 文件。

  7. 运行以下命令确认现在有 3 个 pod:

    $ oc get pods

    输出显示微服务有 3 个 pod,而不是仅有 3 个 pod。

    输出示例

    NAME                                  READY   STATUS    RESTARTS   AGE
    ostoy-frontend-5fbcc7d9-rzlgz         1/1     Running   0          26m
    ostoy-microservice-6666dcf455-2lcv4   1/1     Running   0          81s
    ostoy-microservice-6666dcf455-5z56w   1/1     Running   0          81s
    ostoy-microservice-6666dcf455-tqzmn   1/1     Running   0          26m

  8. 使用 CLI 或通过 Web UI 来扩展应用程序:

    • 在 CLI 中,运行以下命令,将 pod 数量从 3 减少到 2:

      $ oc scale deployment ostoy-microservice --replicas=2
    • 在 OpenShift Web 控制台 UI 的导航菜单中点击 Workloads > Deployments > ostoy-microservice
    • 在页面左侧,找到中间带有"3 Pod"标签的蓝色圆圈。
    • 选择圆圈旁边的箭头会扩展 pod 的数量。选择向下箭头到 2

      UI 扩展

验证

使用 CLI、Web UI 或 OSToy 应用程序检查 pod 数量:

  • 在 CLI 中,通过运行以下命令确认您正在为微服务使用两个 pod:

    $ oc get pods

    输出示例

    NAME                                  READY   STATUS    RESTARTS   AGE
    ostoy-frontend-5fbcc7d9-rzlgz         1/1     Running   0          75m
    ostoy-microservice-6666dcf455-2lcv4   1/1     Running   0          50m
    ostoy-microservice-6666dcf455-tqzmn   1/1     Running   0          75m

  • 在 Web UI 中,选择 Workloads > Deployments > ostoy-microservice

    验证工作负载 pod
  • 您还可以通过在 OSToy app 的导航菜单中选择 Networking 来确认已使用的两个 pod。这两个 pod 应该有两个带颜色的框。

    UI 扩展

18.9.1.2. Pod 自动扩展

Red Hat OpenShift Service on AWS 提供了一个 Horizontal Pod Autoscaler (HPA)。HPA 根据需要使用指标来增加或减少 pod 数量。

流程

  1. 从 Web UI 的导航菜单中,选择 Pod 自动扩展

    HPA Menu
  2. 运行以下命令来创建 HPA:

    $ oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10

    此命令创建一个 HPA,维护由 ostoy-microservice 部署控制的 1 到 10 个 pod 副本。Thoughout 部署,HPA 会增加并减少副本数,以保持所有 pod 的平均 CPU 使用量为 80% 和 40 millicore。

  3. Pod Auto Scaling > Horizontal Pod Autoscaling 页面上,选择 increased the load

    重要

    由于增加负载会生成 CPU 密集型计算,页面可能会变得无响应。这是预期的响应。点只 增加一次 Load。有关此过程的更多信息,请参见 微服务的 GitHub 存储库

    几分钟后,新 pod 会显示在由带颜色框表示的页面中。

    注意

    该页面可能会出现滞后。

验证

使用以下方法之一检查您的 pod 数量:

  • 在 OSToy 应用程序的 Web UI 中,请参阅远程 pod 框:

    HPA Main

    由于只有一个 pod,因此增加工作负载应该会触发增加 pod。

  • 在 CLI 中运行以下命令:

    oc get pods --field-selector=status.phase=Running | grep microservice

    输出示例

    ostoy-microservice-79894f6945-cdmbd   1/1     Running   0          3m14s
    ostoy-microservice-79894f6945-mgwk7   1/1     Running   0          4h24m
    ostoy-microservice-79894f6945-q925d   1/1     Running   0          3m14s

  • 您还可以从 OpenShift Cluster Manager 验证自动扩展

    1. 在 OpenShift Web 控制台导航菜单中点 Observe > Dashboards
    2. 在控制面板中,选择 Kubernetes / Compute Resources / Namespace (Pods) 和命名空间 ostoy

      选择指标
    3. 图会出现显示 CPU 和内存中的资源使用情况。顶部图显示每个 pod 的最新 CPU 消耗,较低图表示内存用量。下面列出了图中的 callout:

      1. 负载增加(A)。
      2. 创建了两个新 pod (B 和 C)。
      3. 每个图的厚性代表 CPU 消耗,并指示哪些 pod 处理更多负载。
      4. 负载减少(D),pod 已被删除。

        选择指标

18.9.1.3. 节点自动扩展

Red Hat OpenShift Service on AWS 允许您使用 节点自动扩展。在这种情况下,您将使用具有集群无法处理的大型工作负载的作业创建一个新项目。启用自动扩展后,当负载大于您当前容量时,集群将自动创建新的节点来处理负载。

前提条件

  • 机器池上启用了自动扩展。

流程

  1. 运行以下命令,创建一个名为 autoscale-ex 的新项目:

    $ oc new-project autoscale-ex
  2. 运行以下命令来创建作业:

    $ oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
  3. 几个 minuts 后,运行以下命令来查看 pod:

    $ oc get pods

    输出示例

    NAME                     READY   STATUS    RESTARTS   AGE
    work-queue-5x2nq-24xxn   0/1     Pending   0          10s
    work-queue-5x2nq-57zpt   0/1     Pending   0          10s
    work-queue-5x2nq-58bvs   0/1     Pending   0          10s
    work-queue-5x2nq-6c5tl   1/1     Running   0          10s
    work-queue-5x2nq-7b84p   0/1     Pending   0          10s
    work-queue-5x2nq-7hktm   0/1     Pending   0          10s
    work-queue-5x2nq-7md52   0/1     Pending   0          10s
    work-queue-5x2nq-7qgmp   0/1     Pending   0          10s
    work-queue-5x2nq-8279r   0/1     Pending   0          10s
    work-queue-5x2nq-8rkj2   0/1     Pending   0          10s
    work-queue-5x2nq-96cdl   0/1     Pending   0          10s
    work-queue-5x2nq-96tfr   0/1     Pending   0          10s

  4. 由于有许多 pod 处于 Pending 状态,因此此状态应触发自动扩展在机器池中创建更多节点。允许时间创建这些 worker 节点。
  5. 几分钟后,使用以下命令查看您现在有多少 worker 节点:

    $ oc get nodes

    输出示例

    NAME                                         STATUS   ROLES          AGE     VERSION
    ip-10-0-138-106.us-west-2.compute.internal   Ready    infra,worker   22h     v1.23.5+3afdacb
    ip-10-0-153-68.us-west-2.compute.internal    Ready    worker         2m12s   v1.23.5+3afdacb
    ip-10-0-165-183.us-west-2.compute.internal   Ready    worker         2m8s    v1.23.5+3afdacb
    ip-10-0-176-123.us-west-2.compute.internal   Ready    infra,worker   22h     v1.23.5+3afdacb
    ip-10-0-195-210.us-west-2.compute.internal   Ready    master         23h     v1.23.5+3afdacb
    ip-10-0-196-84.us-west-2.compute.internal    Ready    master         23h     v1.23.5+3afdacb
    ip-10-0-203-104.us-west-2.compute.internal   Ready    worker         2m6s    v1.23.5+3afdacb
    ip-10-0-217-202.us-west-2.compute.internal   Ready    master         23h     v1.23.5+3afdacb
    ip-10-0-225-141.us-west-2.compute.internal   Ready    worker         23h     v1.23.5+3afdacb
    ip-10-0-231-245.us-west-2.compute.internal   Ready    worker         2m11s   v1.23.5+3afdacb
    ip-10-0-245-27.us-west-2.compute.internal    Ready    worker         2m8s    v1.23.5+3afdacb
    ip-10-0-245-7.us-west-2.compute.internal     Ready    worker         23h     v1.23.5+3afdacb

    您可以看到自动创建 worker 节点来处理工作负载。

  6. 输入以下命令返回到 OSToy 应用程序:

    $ oc project ostoy
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.