跟进Kubernetes Endpoints with TTL:
是否有计划在未来将TTL添加到Kubernetes API资源中?
如果我想尝试自己尝试向API添加可选的TTL,有人可以帮我开始指向我在代码或文档中的正确位置,我应该开始寻找我需要的东西改变?
我假设底层存储的接口有TTL,我需要改变的是API服务器如何传递一个TTL然后转发到存储。听起来不错吗?
答案 0 :(得分:0)
您无需修改kubernetes来执行此操作。
以下是如何自己动手。
以下是为端点执行此操作的特定命令。
向端点添加注释,从现在起一分钟到期:
#!/bin/bash
expiretime=$(date -v+60S +%s)
kubectl annotate endpoints/somename expires-at=$expiretime
列出端点的脚本,并在此之后删除带有expires-at的端点:
#!/bin/bash
while 1
do
for NS in $(kubectl get namespaces -o name | cut -f 2 -d "/")
do
for NAME in $(kubectl --namespace=$NS get endpoints -o name)
do
exp=$( kubectl get --namespace $NS $NAME -o jsonpath={.metadata.annotations."expires-at"} 2> /dev/null) && \
[[ $exp < $(date +%s) ]] && \
echo "Deleting expired endpoints $NAME in $NS" && \
kubectl delete $NS $NAME
done
done
done
pod是运行上述脚本的好地方。它将自动访问API,并且使用复制控制器,它将永远运行。