列表为空时如何使redis pod自动删除

How to make redis pod auto-delete when list is empty

我想部署加载列表的 redis pod。然后我将有 kubernetes 作业,它将执行 bash 脚本,其中的变量取自 redis 中的该列表。

当列表中的所有项目都被使用时,如何让这个 redis pod 自动删除?

默认情况下,Kubernetes 会保留已完成的作业和关联的对象以供调试,删除时您将丢失它们生成的所有日志。

也就是说,可以使用 TTL mechanism for finished Jobs.

自动删除作业

在这里您可以找到启用 TTL 并设置为在完成 100 秒后删除作业和关联对象(pods、服务等)的作业清单示例:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-ttl
spec:
  ttlSecondsAfterFinished: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

我写了一个 bash 脚本来检查一个列表,如果它是空的,它会杀死一个 redis-server。这意味着 pod 已完成,并且 ttlSecondsAfterFinished 作业将被删除

#!/bin/sh

list=$(/usr/local/bin/redis-cli -h $HOSTNAME lrange dealer_codes -1 0)
if [ $? -eq 0 ]
then
  /usr/local/bin/redis-cli -h $HOSTNAME shutdown
fi