添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
开朗的枇杷  ·  Master and Node ...·  1 月前    · 
博学的甘蔗  ·  GitHub - ...·  3 月前    · 
体贴的木耳  ·  知名院友-计算机学院·  4 月前    · 
爱玩的金鱼  ·  Help And Training ...·  5 月前    · 
搜索

可伸缩性和性能

download PDF
OpenShift Container Platform 4.7

扩展 OpenShift Container Platform 集群并调整产品环境的性能

摘要

本文档提供了扩展集群和优化 OpenShift Container Platform 环境性能的说明。

KubeletConfig CR 示例

$ oc get kubeletconfig

NAME                AGE
set-max-pods        15m

显示 KubeletConfig 机器配置示例

$ oc get mc | grep kubelet
99-worker-generated-kubelet-1 b5c5119de007945b6fe6fb215db3b8e2ceb12511 3.2.0 26m 以下流程演示了如何配置 worker 节点上的每个节点的最大 pod 数量。 为您要配置的节点类型获取与静态 MachineConfigPool CR 关联的标签。执行以下步骤之一: 查看机器配置池:

$ oc describe machineconfigpool <name>

$ oc describe machineconfigpool worker

输出示例

apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfigPool
metadata:
  creationTimestamp: 2019-02-08T14:52:39Z
  generation: 1
  labels:
    custom-kubelet: set-max-pods 1
如果添加了标签,它会出现在 labels 下。 如果标签不存在,则添加一个键/值对:

$ oc label machineconfigpool worker custom-kubelet=set-max-pods

流程

  1. 查看您可以选择的可用机器配置对象:

    $ oc get machineconfig

    默认情况下,与 kubelet 相关的配置为 01-master-kubelet 01-worker-kubelet 。 检查每个节点的最大 pod 的当前值:

    $ oc describe node <node_name>

    $ oc describe node ci-ln-5grqprb-f76d1-ncnqq-worker-a-mdv94

    Allocatable 小节中找到 value: pods: <value>

    Allocatable:
     attachable-volumes-aws-ebs:  25
     cpu:                         3500m
     hugepages-1Gi:               0
     hugepages-2Mi:               0
     memory:                      15341844Ki
     pods:                        250
    通过创建一个包含 kubelet 配置的自定义资源文件,设置 worker 节点上的每个节点的最大 pod:

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: set-max-pods
    spec:
      machineConfigPoolSelector:
        matchLabels:
          custom-kubelet: set-max-pods 1
      kubeletConfig:
        maxPods: 500 2
    1
    输入机器配置池中的标签。 添加 kubelet 配置。在本例中,使用 maxPods 设置每个节点的最大 pod。 kubelet 与 API 服务器进行交互的频率取决于每秒的查询数量 (QPS) 和 burst 值。如果每个节点上运行的 pod 数量有限,使用默认值( kubeAPIQPS 50 kubeAPIBurst 100 )就可以。如果节点上有足够 CPU 和内存资源,则建议更新 kubelet QPS 和 burst 速率。

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: set-max-pods
    spec:
      machineConfigPoolSelector:
        matchLabels:
          custom-kubelet: set-max-pods
      kubeletConfig:
        maxPods: <pod_count>
        kubeAPIBurst: <burst_rate>
        kubeAPIQPS: <QPS>
    1. 为带有标签的 worker 更新机器配置池:

      $ oc label machineconfigpool worker custom-kubelet=large-pods
    2. 创建 KubeletConfig 对象:

      $ oc create -f change-maxPods-cr.yaml
    3. 验证 KubeletConfig 对象是否已创建:

      $ oc get kubeletconfig

      输出示例

      NAME                AGE
      set-max-pods        15m
      根据集群中的 worker 节点数量,等待每个 worker 节点被逐个重启。对于有 3 个 worker 节点的集群,这个过程可能需要大约 10 到 15 分钟。 验证更改是否已应用到节点: 在 worker 节点上检查 maxPods 值已更改:

      $ oc describe node <node_name>
    4. 找到 Allocatable 小节: Allocatable: attachable-volumes-gce-pd: 127 cpu: 3500m ephemeral-storage: 123201474766 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 14225400Ki pods: 500 1 ...

      1
      在本例中, pods 参数应报告您在 KubeletConfig 对象中设置的值。 验证 KubeletConfig 对象中的更改:

      $ oc get kubeletconfigs set-max-pods -o yaml

      这应该会显示 status: "True" type:Success

      spec:
        kubeletConfig:
          maxPods: 500
        machineConfigPoolSelector:
          matchLabels:
            custom-kubelet: set-max-pods
      status:
        conditions:
        - lastTransitionTime: "2021-06-30T17:04:07Z"
          message: Success
          status: "True"
          type: Success
  2. maxUnavailable 设置为您需要的值:

    spec:
      maxUnavailable: <node_count>
    重要

    当设置该值时,请考虑无法使用的 worker 节点数量,而不影响在集群中运行的应用程序。

worker 节点数量 集群负载(命名空间) CPU 内核 内存 (GB)

在具有三个 master 或 control plane 节点的大型高密度集群中,当其中一个节点停止、重启或失败时,CPU 和内存用量将会激增。故障可能是因为电源、网络或底层基础架构出现意外问题,除了在关闭集群后重启集群以节约成本的情况下。其余两个 control plane 节点必须处理负载才能高度可用,从而增加资源使用量。另外,在升级过程中还会有这个预期,因为 master 被封锁、排空并按顺序重新引导,以应用操作系统更新以及 control plane Operator 更新。为了避免级联失败,请将 control plane 节点上的总体 CPU 和内存资源使用量保留为最多 60% 的所有可用容量,以处理资源使用量激增。相应地增加 control plane 节点上的 CPU 和内存,以避免因为缺少资源而造成潜在的停机。 节点大小取决于集群中的节点和对象数量。它还取决于集群上是否正在主动创建这些对象。在创建对象时,control plane 在资源使用量方面与对象处于 运行(running) 阶段的时间相比更活跃。 如果使用安装程序置备的基础架构安装方法,则无法修改正在运行的 OpenShift Container Platform 4.7 集群中的 control plane 节点大小。反之,您必须估计节点总数并在安装过程中使用推荐的 control plane 节点大小。 建议基于在带有 OpenShiftSDN 作为网络插件的 OpenShift Container Platform 集群上捕获的数据点。 在 OpenShift Container Platform 4.7 中,与 OpenShift Container Platform 3.11 及之前的版本相比,系统现在默认保留半个 CPU 内核(500 millicore)。确定大小时应该考虑这一点。