④. 生命周期容器钩子
①. Kubernetes中为容器提供了两个hook(钩子函数)
②. PostStart:此钩子函数在容器创建后将立刻执行。但是,并不能保证该钩子函数在容器ENTRYPOINT之前执行。该钩子函数没有输入参数
③. PreStop:此钩子函数在容器被terminate(终止)之前执行,例如
通过接口调用删除容器所在Pod
某些管理事件的发生:健康检查失败、资源紧缺等
如果容器已经被关闭或者进入了completed状态,preStop钩子函数的调用将失败。该函数的执行是同步的,即kubernetes将在该函数完成执行之后才删除容器。该钩子函数没有输入参数
④. Kubernetes在容器启动后立刻发送postStart事件,但是并不能确保postStart事件处理程序在容器的EntryPoint之前执行。postStart事件处理程序相对于容器中的进程来说是异步的(同时执行),然而,Kubernetes在管理容器时,将一直等到postStart事件处理程序结束之后,才会将容器的状态标记为Running。
⑤. Kubernetes在决定关闭容器时,立刻发送preStop事件,并且,将一直等到preStop事件处理程序
结束或者Pod的–grace-period超时,才删除容器
⑥. yaml文件如下
apiVersion: v1 kind: Pod metadata: name: lifestyle-test namespace: hello labels: name: lifestyle-test-labels spec: # 指定规格信息 containers: # 指定要启动一个什么样的容器 - image: nginx #指定镜像。默认会启动一个nginx容器 name: command-test-lifecycle lifecycle: postStart: httpGet: host: "11.168.235.192" path: "/" port: "80" scheme: "HTTP" preStop: httpGet: host: "11.168.235.192" path: "/" port: "80" scheme: "HTTP"