具有TTL的Kubernetes端点
我有一个没有选择器的Kubernetes服务,我希望通过让端点服务器自己注册/心跳来手动管理端点 当我将端点发布到Kubernetes API服务器时,是否有办法为它们指定一个TTL,这样当我的端点服务器终止并停止心跳时,它们将超时并自动删除具有TTL的Kubernetes端点,kubernetes,Kubernetes,我有一个没有选择器的Kubernetes服务,我希望通过让端点服务器自己注册/心跳来手动管理端点 当我将端点发布到Kubernetes API服务器时,是否有办法为它们指定一个TTL,这样当我的端点服务器终止并停止心跳时,它们将超时并自动删除 如果不是,我是否可以通过直接发布到基础Etcd而不是通过Kubernetes API将端点添加到注册表中,或者这会导致其他问题?端点API对象中没有内置TTL或心跳信号。不过,您确实不想直接写入etcd…这最终会让您感到痛苦端点API对象中没有内置TTL或
如果不是,我是否可以通过直接发布到基础Etcd而不是通过Kubernetes API将端点添加到注册表中,或者这会导致其他问题?端点API对象中没有内置TTL或心跳信号。不过,您确实不想直接写入etcd…这最终会让您感到痛苦端点API对象中没有内置TTL或心跳信号。不过,你真的不想直接写入etcd…这最终会让你感到痛苦你不需要修改kubernetes来完成这项工作 下面是你自己怎么做的
#!/bin/bash
expiretime=$(date -v+60S +%s)
kubectl annotate endpoints/somename expires-at=$expiretime
脚本以列出端点,并删除在之后过期的端点:
#!/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
#/bin/bash
而1
做
对于以美元表示的NS(kubectl获取名称空间-o name | cut-f 2-d/)
做
对于$中的名称(kubectl--namespace=$NS get endpoints-o NAME)
做
exp=$(kubectl-get--namespace$NS$NAME-o jsonpath={.metadata.annotations.”在“}2>/dev/null”过期)&&\
[$exp<$(日期+%s)]和\
echo“删除$NS中的过期端点$NAME”&&&\
kubectl删除$NS$NAME
完成
完成
完成
pod是运行上述脚本的好地方。它将自动访问API,使用复制控制器,它将永远运行。您无需修改kubernetes即可完成此操作 下面是你自己怎么做的
#!/bin/bash
expiretime=$(date -v+60S +%s)
kubectl annotate endpoints/somename expires-at=$expiretime
脚本以列出端点,并删除在之后过期的端点:
#!/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
#/bin/bash
而1
做
对于以美元表示的NS(kubectl获取名称空间-o name | cut-f 2-d/)
做
对于$中的名称(kubectl--namespace=$NS get endpoints-o NAME)
做
exp=$(kubectl-get--namespace$NS$NAME-o jsonpath={.metadata.annotations.”在“}2>/dev/null”过期)&&\
[$exp<$(日期+%s)]和\
echo“删除$NS中的过期端点$NAME”&&&\
kubectl删除$NS$NAME
完成
完成
完成
pod是运行上述脚本的好地方。它将自动访问API,使用复制控制器,它将永远运行。也将此发布到也将此发布到