Kubernetes中Pod的扩缩容介绍

Kubernetes中Pod的扩缩容介绍

在实际生产系统中,我们经常会遇到某个服务需要扩容的场景,也可能会遇到由于资源紧张或者工作负载降低而需

要减少服务实例数量的场景。此时可以利用 Deployment/RC 的 Scale 机制来完成这些工作。

Kubernetes 对 Pod 的扩缩容操作提供了手动和自动两种模式,手动模式通过执行 kubectl scale 命令或通过

RESTful API 对一个 Deployment/RC 进行 Pod 副本数量的设置,即可一键完成。自动模式则需要用户根据某个性

能指标或者自定义业务指标,并指定 Pod 副本数量的范围,系统将自动在这个范围内根据性能指标的变化进行调

整。

1、手动扩缩容

下面以 Deployment nginx 为例进行手动扩缩容的演示。

配置文件 037-nginx-deployment.yaml 的内容为:

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-deployment
  template:
    metadata:
      labels:
        app: nginx-deployment
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
shell 复制代码
[root@master cha3]# kubectl create -f 037-nginx-deployment.yaml
deployment.apps/nginx-deployment created

已运行的 Pod 副本数量为3个:

shell 复制代码
[root@master cha3]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c5f6c4496-br6jv   1/1     Running   0          56s
nginx-deployment-5c5f6c4496-mr24j   1/1     Running   0          56s
nginx-deployment-5c5f6c4496-z8jh2   1/1     Running   0          56s
shell 复制代码
[root@master cha3]# kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           76s
shell 复制代码
[root@master cha3]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-5c5f6c4496   3         3         3       79s

通过 kubectl scale 命令可以将 Pod 副本数量从初始的 3 个更新为 5 个:

shell 复制代码
[root@master cha3]# kubectl scale deployment nginx-deployment --replicas 5
deployment.apps/nginx-deployment scaled
shell 复制代码
[root@master cha3]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c5f6c4496-2565s   1/1     Running   0          40s
nginx-deployment-5c5f6c4496-b4d87   1/1     Running   0          40s
nginx-deployment-5c5f6c4496-br6jv   1/1     Running   0          3m34s
nginx-deployment-5c5f6c4496-mr24j   1/1     Running   0          3m34s
nginx-deployment-5c5f6c4496-z8jh2   1/1     Running   0          3m34s

将 --replicas 设置为比当前 Pod 副本数量更小的数字,系统将会杀掉一些运行中的 Pod,以实现应用集群缩容:

shell 复制代码
[root@master cha3]# kubectl scale deployment nginx-deployment --replicas=1
deployment.apps/nginx-deployment scaled
shell 复制代码
[root@master cha3]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c5f6c4496-br6jv   1/1     Running   0          4m18s

2、自动扩缩容机制

Kubernetes 从 1.1 版本开始,新增了名为 Horizontal Pod Autoscaler(HPA) 的控制器,用于实现基于 CPU使

用率进行自动 Pod 扩缩容的功能。HPA 控制器基于 Master 的 kube-controller-manager 服务启动参数

--horizontal-pod-autoscaler-sync-period 定义的探测周期(默认值为15s),周期性地监测目标 Pod 的资源

性能指标,并与 HPA 资源对象中的扩缩容条件进行对比,在满足条件时对 Pod 副本数量进行调整。

Kubernetes 在早期版本中,只能基于 Pod 的 CPU 使用率进行自动扩缩容操作,关于 CPU 使用率的数据来源于

Heapster 组件。Kubernetes 从 1.6 版本开始,引入了基于应用自定义性能指标的 HPA 机制,并在 1.9 版本之后

逐步成熟。本节对 Kubernetes 的 HPA 的原理和实践进行详细说明。

2.1 HPA的工作原理

Kubernetes 中的某个 Metrics Server( Heapster 或自定义 Metrics Server )持续采集所有 Pod 副本的指标数

据。HPA 控制器通过 Metrics Server 的 API ( Heapster 的 API 或聚合 API ) 获取这些数据,基于用户定义的扩缩

容规则进行计算,得到目标 Pod 副本数量。当目标 Pod 副本数量与当前副本数量不同时,HPA 控制器就向 Pod

的副本控制器( Deployment、RC 或 ReplicaSet )发起 scale 操作,调整 Pod 的副本数量,完成扩缩容操作。下图

描述了 HPA 体系中的关键组件和工作流程。

接下来首先对HPA能够管理的指标类型、扩缩容算法、HPA 对象的配置进行详细说明,然后通过一个完整的示例

对如何搭建和使用基于自定义指标的 HPA 体系进行说明。

2.2 指标的类型

Master 的 kube-controller-manager 服务持续监测目标 Pod 的某种性能指标,以计算是否需要调整副本数量。

目前 Kubernetes 支持的指标类型如下:

  • Pod 资源使用率:Pod 级别的性能指标,通常是一个比率值,例如 CPU 使用率。

  • Pod 自定义指标:Pod 级别的性能指标,通常是一个数值,例如接收的请求数量。

  • Object 自定义指标或外部自定义指标:通常是一个数值,需要容器应用以某种方式提供,例如通过

    HTTP URL "/metrics" 提供,或者使用外部服务提供的指标采集 URL。

Kubernetes 从 1.11 版本开始,弃用基于 Heapster 组件完成 Pod 的 CPU 使用率采集的机制,全面转向基于

Metrics Server 完成数据采集。Metrics Server 将采集到的 Pod 性能指标数据通过聚合API(Aggregated API) 如

metrics.k8s.iocustom.metrics.k8s.ioexternal.metrics.k8s.io提供给HPA控制器进行查询。

2.3 扩缩容算法详解

Autoscaler 控制器从聚合 API 获取到 Pod 性能指标数据之后,基于下面的算法计算出目标 Pod 副本数量,与当前

运行的 Pod 副本数量进行对比,决定是否需要进行扩缩容操作:

shell 复制代码
desiredReplicas=ceil[currentReplicas*(currentMetricValue/desiredMetricValue )]

即当前副本数×(当前指标值/期望的指标值),将结果向上取整。

以 CPU 请求数量为例,如果用户设置的期望指标值为 100m,当前实际使用的指标值为 200m,则计算得到期望

的 Pod 副本数量应为两个( 200/100=2 )。如果设置的期望指标值为 50m,计算结果为 0.5,则向上取整值为 1,

得到目标 Pod 副本数量应为 1 个。

当计算结果与 1 非常接近时,可以设置一个容忍度让系统不做扩缩容操作。容忍度通过

kube-controller-manager 服务的启动参数 --horizontal-pod-autoscaler-tolerance 进行设置,默认值

为 0.1(即10%),表示基于上述算法得到的结果在 [-10%-+10%] 区间内,即 [0.9-1.1],控制器都不会进行扩缩容操

作。

也可以将期望指标值( desiredMetricValue )设置为指标的平均值类型,例如 targetAverageValue

targetAverageUtilization,此时当前指标值(currentMetricValue)的算法为所有 Pod 副本当前指标值的总

和除以 Pod 副本数量得到的平均值。

此外,存在几种 Pod 异常的情况,如下所述:

  • Pod 正在被删除(设置了删除时间戳):将不会计入目标 Pod 副本数量。

  • Pod 的当前指标值无法获得:本次探测不会将这个 Pod 纳入目标 Pod 副本数量,后续的探测会被重新纳入计

    算范围。

  • 如果指标类型是 CPU 使用率,则对于正在启动但是还未达到 Ready 状态的 Pod,也暂时不会纳入目标副本数

    量范围。可以通过 kube-controller-manager 服务的启动参数

    --horizontal-pod-autoscaler-initial-readiness-delay 设置首次探测 Pod 是否 Ready 的延时时间,

    默认值为 30s 。另一个启动参数 --horizontal-pod-autoscaler-cpuinitialization-period 设置首次

    采集 Pod 的 CPU 使用率的延时时间。

在计算当前指标值/期望的指标值 (currentMetricValue / desiredMetricValue) 时将不会包括上述这些异常

Pod。

当存在缺失指标的 Pod 时,系统将更保守地重新计算平均值。系统会假设这些 Pod 在需要缩容(Scale Down)时消

耗了期望指标值的100%,在需要扩容(Scale Up)时消耗了期望指标值的0%,这样可以抑制潜在的扩缩容操作。

此外,如果存在未达到 Ready 状态的 Pod,并且系统原本会在不考虑缺失指标或 NotReady 的 Pod 情况下进行扩

展,则系统仍然会保守地假设这些 Pod 消耗期望指标值的0%,从而进一步抑制扩容操作。

如果在 HorizontalPodAutoscaler 中设置了多个指标,系统就会对每个指标都执行上面的算法,在全部结果中

以期望副本数的最大值为最终结果。如果这些指标中的任意一个都无法转换为期望的副本数(例如无法获取指标的

值),系统就会跳过扩缩容操作。

最后,在 HPA 控制器执行扩缩容操作之前,系统会记录扩缩容建议信息(Scale Recommendation)。控制器会在

操作时间窗口(时间范围可以配置)中考虑所有的建议信息,并从中选择得分最高的建议。这个值可通过

kube-controller-manager 服务的启动参数

--horizontal-pod-autoscaler-downscale-stabilization-window 进行配置,默

认值为5min。这个配置可以让系统更为平滑地进行缩容操作,从而消除短时间内指标值快速波动产生的影响。

2.4 HorizontalPodAutoscaler配置详解

Kubernetes 将 HorizontalPodAutoscaler 资源对象提供给用户来定义扩缩容的规则。

HorizontalPodAutoscaler 资源对象处于 Kubernetes 的 API 组 autoscaling 中,目前包括 v1 和 v2 两个版本。

其中 autoscaling/v1 仅支持基于 CPU 使用率的自动扩缩容,autoscaling/v2 则用于支持基于任意指标的自

动扩缩容配置,包括基于资源使用率、Pod 指标、其他指标等类型的指标数据,当前版本为

autoscaling/v2beta2

下面对 HorizontalPodAutoscaler 的配置和用法进行说明。

(1)基于 autoscaling/v1 版本的 HorizontalPodAutoscaler 配置,仅可以设置 CPU 使用率。

配置文件 038-php-apache.yaml 的内容为:

yaml 复制代码
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

主要参数如下:

  • scaleTargetRef:目标作用对象,可以是 Deployment、ReplicationController 或 ReplicaSet。

  • targetCPUUtilizationPercentage:期望每个 Pod 的 CPU 使用率都为 50%,该使用率基于 Pod 设置的

    CPU Request 值进行计算,例如该值为 200m,那么系统将维持 Pod 的实际 CPU 使用值为 100m。

  • minReplicasmaxReplicas:Pod 副本数量的最小值和最大值,系统将在这个范围内进行自动扩缩容操

    作,并维持每个 Pod 的 CPU 使用率为 50%。

shell 复制代码
[root@master cha3]# kubectl create -f 038-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/50%   1         10        0          17s

为了使用 autoscaling/v1 版本的 HorizontalPodAutoscaler,需要预先安装 Heapster 组件或 Metrics

Server,用于采集 Pod 的 CPU 使用率。Heapster 从 Kubernetes 1.11 版本开始进入弃用阶段,本节不再对

Heapster 进行详细说明,本节主要对基于自定义指标进行自动扩缩容的设置进行说明。

(2)基于 autoscaling/v2beta2 的 HorizontalPodAutoscaler 配置。

配置文件 039-php-apache.yaml 的内容为:

yaml 复制代码
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
  metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 50

主要参数如下。

  • scaleTargetRef:目标作用对象,可以是 Deployment、ReplicationController 或 ReplicaSet。

  • minReplicasmaxReplicas:Pod 副本数量的最小值和最大值,系统将在这个范围内进行自动扩缩容操

    作,并维持每个 Pod 的 CPU 使用率为 50%。

  • metrics:目标指标值,在 metrics 中通过参数 type 定义指标的类型。通过参数 target 定义相应的指标目标

    值,系统将在指标数据达到目标值时(考虑容忍度的区间)触发扩缩容操作。

shell 复制代码
[root@master cha3]# kubectl create -f 039-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/50%   1         10        0          5s

等价写法,配置文件 040-php-apache.yaml 的内容为:

yaml 复制代码
# 版本要修改
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        # 整合在一起的写法
        targetAverageUtilization: 50
shell 复制代码
[root@master cha3]# kubectl create -f 040-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/50%   1         10        0          12s

可以将 metrics 中的 type(指标类型)设置为以下三种,可以设置一个或多个组合,如下所述。

(1)Resource:基于资源的指标值,可以设置的资源为 CPU 和内存。

(2)Pods:基于 Pod 的指标,系统将对全部 Pod 副本的指标值进行平均值计算。

(3)Object:基于某种资源对象(如Ingress)的指标或应用系统的任意自定义指标。

Resource 类型的指标可以设置 CPU 和内存。对于 CPU 使用率,在 target 参数中设置 averageUtilization 定义目

标平均 CPU 使用率。对于内存资源,在 target 参数中设置 AverageValue 定义目标平均内存使用值。指标数据可

以通过 API "metrics.k8s.io" 进行查询,要求预先启动 Metrics Server 服务。

target.type 的取值为:Utilization、AverageValue

target 对应的取值为:averageUtilization、averageValue

关于内存的配置,配置文件 041-php-apache.yaml 的内容为:

yaml 复制代码
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: memory
        target:
          type: AverageValue
          averageValue: 100Mi
shell 复制代码
[root@master cha3]# kubectl create -f 041-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/100Mi   1         10        0          6s

等价写法,配置文件 `` 的内容为:

yaml 复制代码
# 版本要修改
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        # 整合在一起的写法
        targetAverageValue: 100Mi
shell 复制代码
[root@master cha3]# kubectl create -f 042-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/100Mi   1         10        0          13s

Pods 类型和 Object 类型都属于自定义指标类型,指标的数据通常需要搭建自定义 Metrics Server 和监控工具进

行采集和处理。指标数据可以通过 API "custom.metrics.k8s.io" 进行查询,要求预先启动自定义 Metrics

Server 服务。

类型为 Pods 的指标数据来源于 Pod 对象本身,其 target 指标类型只能使用 AverageValue。

配置文件 043-php-apache.yaml 的内容为:

yaml 复制代码
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10          
  metrics:
    - type: Pods
      pods:
        metric:
          name: packets-per-second
        target:
          type: AverageValue
          averageValue: 1k

其中,设置 Pod 的指标名为 packets-per-second,在目标指标平均值为 1000 时触发扩缩容操作。

shell 复制代码
[root@master cha3]# kubectl create -f 043-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS        MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/1k   1         10        0          4s

类型为 Object 的指标数据来源于其他资源对象或任意自定义指标,其 target 指标类型可以使用 Value 或

AverageValue (根据Pod副本数计算平均值)进行设置。

下面对几种常见的自定义指标给出示例和说明:

例1,设置指标的名称为 requests-per-second,其值来源于 Ingress "main-route",将目标值(value)设置

2000,即在Ingress的每秒请求数量达到2000个时触发扩缩容操作。

配置文件 044-php-apache.yaml 的文件内容为:

yaml 复制代码
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10          
  metrics:
    - type: Object
      object:
        metric:
          name: requests-per-second
        describedObject:
          apiVersion: extensions/v1beta1
          kind: Ingress
          name: main-route
        target:
          type: Value
          value: 2k
shell 复制代码
[root@master cha3]# kubectl create -f 044-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS        MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/2k   1         10        0          4s

例2,设置指标的名称为 http_requests,并且该资源对象具有标签 verb=GET,在指标平均值达到500时触发

扩缩容操作。

配置文件 045-php-apache.yaml 的内容为:

yaml 复制代码
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10          
  metrics:
    - type: Object
      object:
        metric:
          name: http_requests
          selector: {matchLabels: {verb: GET}}
        describedObject:
          apiVersion: extensions/v1beta1
          kind: Ingress
          name: main-route
        target:
          type: AverageValue
          value: 500
shell 复制代码
[root@master cha3]# kubectl create -f 045-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/500   1         10        0          5s

还可以在同一个 HorizontalPodAutoscaler 资源对象中定义多个类型的指标,系统将针对每种类型的指标都计算

Pod 副本的目标数量,以最大值为准进行扩缩容操作。

yaml 复制代码
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 50
    - type: Resource
      resource:
        name: memory
        target:
          type: AverageValue
          averageValue: 100Mi
    - type: Pods
      pods:
        metric:
          name: packets-per-second
        target:
          type: AverageValue
          averageValue: 1k
    - type: Object
      object:
        metric:
          name: requests-per-second
        describedObject:
          apiVersion: extensions/v1beta1
          kind: Ingress
          name: main-route
        target:
          type: Value
          value: 10k
shell 复制代码
[root@master cha3]# kubectl create -f 046-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS                                     MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/100Mi, <unknown>/1k + 2 more...   1         10        0          4s

从 1.10 版本开始,Kubernetes 引入了对外部系统指标的支持。例如,用户使用了公有云服务商提供的消息服务

或外部负载均衡器,希望基于这些外部服务的性能指标(如消息服务的队列长度、负载均衡器的QPS)对自己部署在

Kubernetes 中的服务进行自动扩缩容操作。这时,就可以在 metrics 参数部分设置 typeExternal 来设置

自定义指标,然后就可以通过 API "external.metrics.k8s.io" 查询指标数据了。当然,这同样要求自定义

Metrics Server 服务已正常工作。

例3,设置指标的名称为 queue_messages_ready,具有 queue=worker_tasks 标签在目标指标平均值为30

触发自动扩缩容操作。

配置文件 047-php-apache.yaml 的文件内容为:

yaml 复制代码
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
    name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10          
  metrics:
    - type: External
      external:
        metric:
          name: queue_messages_ready
          selector: {matchLabels: {queue: worker_tasks}}
        target:
          type: AverageValue
          averageValue: 30
shell 复制代码
[root@master cha3]# kubectl create -f 047-php-apache.yaml
horizontalpodautoscaler.autoscaling/php-apache created
shell 复制代码
[root@master cha3]# kubectl get hpa
NAME         REFERENCE               TARGETS              MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/30 (avg)   1         10        0          4s

在使用外部服务的指标时,要安装、部署能够对接到 Kubernetes HPA 模型的监控系统,并且完全了解监控系统

采集这些指标的机制,后续的自动扩缩容操作才能完成。

Kubernetes 推荐尽量使用 type 为 Object 的 HPA 配置方式,这可以通过使用 Operator 模式,将外部指标通过

CRD(自定义资源)定义为API资源对象来实现。

相关推荐
木鱼时刻2 小时前
容器与 Kubernetes 基本概念与架构
容器·架构·kubernetes
chuanauc12 小时前
Kubernets K8s 学习
java·学习·kubernetes
庸子1 天前
基于Jenkins和Kubernetes构建DevOps自动化运维管理平台
运维·kubernetes·jenkins
Connie14511 天前
k8s多集群管理中的联邦和舰队如何理解?
云原生·容器·kubernetes
伤不起bb1 天前
Kubernetes 服务发布基础
云原生·容器·kubernetes
别骂我h1 天前
Kubernetes服务发布基础
云原生·容器·kubernetes
weixin_399380692 天前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
斯普信专业组2 天前
K8s环境下基于Nginx WebDAV与TLS/SSL的文件上传下载部署指南
nginx·kubernetes·ssl
&如歌的行板&2 天前
如何在postman中动态请求k8s中的pod ip(基于nacos)
云原生·容器·kubernetes
云妙算2 天前
K8s 弹性伸缩踩坑实录:周末 2 天烧掉 10 万元!?
云原生·kubernetes