在Kubernetes中是否有针对关机或在杀死Pod之前的探针?

时间:2019-03-20 21:20:19

标签: kubernetes

是否有办法触发关闭,因此我们可以在关闭之前正常关闭所有连接,并且在该探测之后不执行任何操作并保持该探测准备好被杀死。

这包括刷新日志,在移交给新的pod之前保留应用程序的任何状态以及更多用例。

1 个答案:

答案 0 :(得分:2)

您有2个选择:

  1. 容器(PID 1)在删除容器(和容器)之前会收到SIGTERM。您可以捕获SIGTERM并对其执行操作。

  2. 您可以使用preStop lifecycle hook

重要的实施细节可以在这里找到:https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods

httpGet示例

AuthenticationResult authenticationResult = authenticationContext.AcquireTokenAsync("myFunctionAppIdGUID", "myClientAppIdGUID", new Uri("https://login.live.com/oauth20_desktop.srf"), new PlatformParameters(PromptBehavior.SelectAccount)).Result;

在此文件上的apiVersion: v1 kind: Pod metadata: name: prestop-pod spec: terminationGracePeriodSeconds: 5 containers: - name: nginx image: nginx lifecycle: preStop: httpGet: # only port is reqired port: 80 path: "?preStop" # scheme: HTTP # host: ... # httpHeaders: # name: ... # value: ... 之后,在另一个终端上执行kubectl apply -f的同时运行kubectl log -f prestop-pod。您应该看到类似以下内容的

kubectl delete pod prestop-pod