1. 程式人生 > 實用技巧 >pod 生命週期hook鉤子函式

pod 生命週期hook鉤子函式

參考:

k8s使用pod hook鉤子函式

1、postStart

這個鉤子在建立容器之後立即執行。但是,並不能保證鉤子在容器本身的初始命令(ENTRYPOINT)之前執行。主要用於資源部署、環境準備等。
不過需要注意的是如果鉤子花費實踐過長以至於不能執行或者掛起,容器將不能達到Running狀態。

apiVersion: v1
kind: Pod
metadata:
  name: start-hook
  labels:
    app: test
spec:
  containers:
  - name: start-hook
    image: nginx
    ports:
    - name: nginx-port
      containerPort: 80
    lifecycle:
      postStart:
        exec:
          command: ["/bin/bash", "-c", "echo before running> /postStart.txt"]

2、preStop

在容器終止之前立即呼叫此鉤子。它是阻塞的,同時也是同步的,所以只有此鉤子執行完後,才會執行刪除容器的操作
主要用於優雅關閉應用程式、通知其他系統等。如果鉤子在執行期間掛起,Pod階段將停留在Running狀態並且不會達到failed狀態

apiVersion: v1
kind: Pod
metadata:
  name: stop-hook
  labels:
    app: test
spec:
  containers:
  - name: stop-hook
    image: nginx
    ports:
    - name: nginx-port
      containerPort: 80
    lifecycle:
      preStop:
        exec:
          command: ["/usr/sbin/nginx","-s", "quit"]