缩小特定有状态集或部署的可能性

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

我希望我的 kubedownscaler 缩小特定状态集的规模。下面是我正在使用的配置图。

apiVersion: v1
kind: ConfigMap
metadata:
name: kube-downscaler
data:
DEFAULT_DOWNTIME: "Sat-Sun 00:00-06:30 Asia/Kolkata,Mon-Fri 15:33-15:43 Asia/Kolkata"
INCLUDE_RESOURCES: "deployments,horizontalpodautoscalers,statefulsets"
EXCLUDE_NAMESPACES: "kube-system, kube-downscaler, cert-manager, default, monitoring, operator, dev"

这里可以添加3或4个statefulset吗

或者我可以只使用一个像这样的命名空间<INCLUDE_NAMESPACES:“test”>

我尝试过这个,但我不走运。

kubernetes autoscaling kubernetes-statefulset
1个回答
0
投票

我认为您指的是 Kube-Downscaler 开源项目: https://codeberg.org/hjacobs/kube-downscaler

我发现您已经有一些目标要缩小的资源,因此我们不会碰它们。相反,我们将创建 Kube Downscaler 的第二个部署,我们将其称为

kube-downscaler-second

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    application: kube-downscaler-second
    version: v23.2.0
  name: kube-downscaler-second
spec:
  replicas: 1
  selector:
    matchLabels:
      application: kube-downscaler-second
  template:
    metadata:
      labels:
        application: kube-downscaler-second
        version: v23.2.0
    spec:
      serviceAccountName: kube-downscaler
      containers:
      - name: downscaler
        image: hjacobs/kube-downscaler:latest
        args:
          - --interval=60
        envFrom:
          - configMapRef:
              name: kube-downscaler-second
              optional: true
        resources:
          limits:
            memory: 100Mi
          requests:
            cpu: 5m
            memory: 100Mi
        securityContext:
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000

完成后,从第一个 kube-downscaler 的规则中删除我们要定位的命名空间。然后,为了仅定位“测试命名空间”中存在的 StatefulSet,您只需将该命名空间作为目标。您可以在 ConfigMap 的

EXCLUDE_NAMESPACES
环境变量中使用此正则表达式执行类似的操作。

^(?!test-namespace).*$

如果您不想缩小该命名空间内的其他有状态集,则可以将它们插入到

EXCLUDE_DEPLOYMENTS
环境变量中(尽管它的名称如此,但它适用于每种类型的资源)

你的配置图应该看起来像这样:

apiVersion: v1
kind: ConfigMap
metadata:
name: kube-downscaler-second
data:
DEFAULT_DOWNTIME: "Sat-Sun 00:00-06:30 Asia/Kolkata,Mon-Fri 15:33-15:43 Asia/Kolkata"
INCLUDE_RESOURCES: "statefulsets"
EXCLUDE_NAMESPACES: "^(?!test-namespace).*$"
EXCLUDE_DEPLOYMENTS: statefulset-hello,statefulset-world

这应该有效,请告诉我!

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