我希望我的 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”>
我尝试过这个,但我不走运。
我认为您指的是 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
这应该有效,请告诉我!