我有一个运行在 Kubernetes 集群内的 Django 应用程序,我想为其实现一个 prestop 钩子。这里的想法是,在每次调用 prestop 钩子时,Pod/容器将失败就绪探针检查,因此在集群关闭之前不会接收任何新请求。在这种情况下,我的应用程序中 readiness 探针和 prestop 钩子均为 api 端点:/readiness 和 /prestop。
另外,为了使 readiness 探针失败,在每次调用 /readiness 时,必须返回大于 400 的代码。
那么我的问题是,如何存储状态以指示在调用 prestop 钩子后应返回 400 的就绪探针状态?请注意,我只应为调用 prestop 钩子的 Pod 返回 400,其他 Pod/容器应继续正常运行。因此,我正在寻找一种方法来跟踪单个 Pod/容器的状态。
我做了一个非常愚蠢的测试,看看是否可以在请求之间保留计数器的状态:
无论我调用这个函数多少次,
另外,为了使 readiness 探针失败,在每次调用 /readiness 时,必须返回大于 400 的代码。
那么我的问题是,如何存储状态以指示在调用 prestop 钩子后应返回 400 的就绪探针状态?请注意,我只应为调用 prestop 钩子的 Pod 返回 400,其他 Pod/容器应继续正常运行。因此,我正在寻找一种方法来跟踪单个 Pod/容器的状态。
我做了一个非常愚蠢的测试,看看是否可以在请求之间保留计数器的状态:
class ReadinessProbeView(View):
def __init__(self):
self.count = 0
def get(self, request):
result = {}
self.count = self.count + 1
result["healthy"] = True
result["count"] = self.count
return JsonResponse(result, status=200)
无论我调用这个函数多少次,
count = 1
,因此状态没有在请求之间得到维护。
command: ["uwsgi", "--http", ":8000", "--wsgi-file", "wsgi.py", "--workers", "2", "--max-requests", "100", "--master", "--vacuum", "--enable-threads"]
- Felipe