PreStop此钩子函数在容器被 terminate(终止)之前执行,例如: 通过接口调用删除容器所在 Pod 某些管理事件的发生:健康检查失败、资源紧缺等 如果容器已经被关闭或者进入了 completed 状态,preStop 钩子函数的调用将失败。该函数的执行是同步的,即,kubernetes 将在该函数完成执行之后才删除容器。该钩子函数没有输入参数。
apiVersion: v1kind: Podmetadata: name: lansonli-demospec: containers: - name: lansonli-demo-container image: alpine command: ["/bin/sh", "-c", "echo hello; "] volumeMounts: - name: mount1 mountPath: /app lifecycle: postStart: exec: command: ["/bin/sh", "-c", "echo world;"] preStop: exec: command: ["/bin/sh","-c","echo 66666;"]
- Kubernetes 在容器启动后立刻发送 postStart 事件,但是并不能确保 postStart 事件处理程序在容器的 EntryPoint 之前执行。postStart 事件处理程序相对于容器中的进程来说是异步的(同时执行),然而,Kubernetes 在管理容器时,将一直等到 postStart 事件处理程序结束之后,才会将容器的状态标记为 Running。
- Kubernetes 在决定关闭容器时,立刻发送 preStop 事件,并且,将一直等到 preStop 事件处理程序结束或者 Pod 的 --grace-period 超时,才删除容器
六、资源限制
pods/qos/qos-pod.yaml apiVersion: v1kind: Podmetadata: name: qos-demo namespace: qos-examplespec: containers: - name: qos-demo-ctr image: nginx resources: limits: # 限制最大大小 -Xmx memory: "200Mi" cpu: "700m" # 启动默认给分配的大小 -Xms requests: memory: "200Mi" cpu: "700m"
kubectl describe 可用来排错的,查看资源的状态