启用自动伸缩时从应用程序查询副本数量

问题描述 投票:0回答:1

我们已使用 KEDA 将自动缩放功能集成到我们的 kubernetes 设置中。目前,我们使用 KEDA 自定义自动缩放器作为触发器,通过我们的自定义逻辑进行自动缩放。我们有一个组件有特定的要求,它应该知道组件启动时可用的副本的数量。我需要一种方法来实现这一点。这应该适用于有状态集和部署。如果您需要更多信息,请添加评论

kubernetes autoscaling keda
1个回答
0
投票

Replicas 是 StatefulSet 控制器创建的 Pod 数量。要查看 Deployment 创建的 ReplicaSet (rs),请运行命令 kubectl get rs

StatefulSets 管理一组 Pod 的部署和扩展,并提供这些 Pod 的排序和唯一性保证。您只需找到要扩展的 StatefulSet,运行 kubectl get statefulsets .

根据 kubernetes 文档,您可以尝试使用 init 容器 来获取副本计数。

spec:
  initContainers:
  - name: get-replica-count
    image: busybox
    command: ["sh", "-c"]
    args: 
      - |
        REPLICAS=$(kubectl get statefulset example-statefulset -o=jsonpath='{.spec.replicas}')
        echo "REPLICAS=$REPLICAS" > /replica-count.txt
    volumeMounts:
    - name: config-volume
      mountPath: /config
  containers:
  - name: main-container
    image: nginx:1.14.2
    volumeMounts:
    - name: config-volume
      mountPath: /config
      readOnly: true
  volumes:
  - name: config-volume
    emptyDir: {}

通过上面的 yaml 清单,kubectl 获取副本数并将其存储在空目录文件中,然后主容器可以读取该文件以获取副本数。

© www.soinside.com 2019 - 2024. All rights reserved.