14、Kubernetes核心技术

编程入门 行业动态 更新时间:2024-10-12 08:17:02

14、Kubernetes<a href=https://www.elefans.com/category/jswz/34/1767668.html style=核心技术"/>

14、Kubernetes核心技术

目录

一、概述

二、回调事件类型

三、定义 postStart 和 preStop回调


一、概述

Kubernetes 为容器提供了生命周期回调。 回调使容器能够了解其管理生命周期中的事件,并在执行相应的生命周期回调时运行在处理程序中实现的代码。Kubernetes 支持 postStart 和 preStop 事件。 当一个容器启动后,Kubernetes 将立即发送 postStart 事件;在容器被终结之前, Kubernetes 将发送一个 preStop 事件。容器可以为每个事件指定一个处理程序。

二、回调事件类型

k8s中支持两种回调事件:

  • 1)、PostStart

这个回调在容器被创建之后立即被执行。 但是,不能保证回调会在容器入口点(ENTRYPOINT)之前执行。 没有参数传递给处理程序。

  • 2)、PreStop

在容器因 API 请求或者管理事件(诸如存活态探针、启动探针失败、资源抢占、资源竞争等) 而被终止之前,此回调会被调用。 如果容器已经处于已终止或者已完成状态,则对 preStop 回调的调用将失败。

三、定义 postStart 和 preStop回调

通过postStart指定容器启动后需要执行的一些逻辑。

vim lifecycle-callback-event.yaml

apiVersion: v1
kind: Pod
metadata:name: nginx
spec:containers:- name: nginximage: nginxlifecycle:postStart:exec:command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]preStop:exec:command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]                  

在上述配置文件中,你可以看到 postStart 命令在容器的 /usr/share 目录下写入文件 message。 命令 preStop 负责优雅地终止 nginx 服务。当因为失效而导致容器终止时,这一处理方式很有用。

创建并查看Pod:

$ kubectl apply -f lifecycle-callback-event.yaml 
pod/nginx created# 验证 Pod 中的容器已经运行
$ kubectl get pod -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          25s   192.168.1.3   node01   <none>           <none># 使用 shell 连接到你的 Pod 里的容器
$ kubectl exec -it nginx -- /bin/bash
# 在 shell 中,验证 postStart 处理函数创建了 message 文件
root@nginx:/# cat /usr/share/message
# 命令行输出的是 postStart 处理函数所写入的文本
Hello from the postStart handler

可以看到,我们使用postStart指定了在nginx容器被创建之后执行输出"Hello from the postStart handler"到容器里面的/usr/share/message文件,创建完pod后进入容器查看,可以看到对应的文件内容。

注意:
Kubernetes 在容器创建后立即发送 postStart 事件。 然而,postStart 处理函数的调用不保证早于容器的入口点(entrypoint) 的执行。postStart 处理函数与容器的代码是异步执行的,但 Kubernetes 的容器管理逻辑会一直阻塞等待 postStart 处理函数执行完毕。 只有 postStart 处理函数执行完毕,容器的状态才会变成 RUNNING。
Kubernetes 在容器结束前立即发送 preStop 事件。除非 Pod 宽限期限超时, Kubernetes 的容器管理逻辑会一直阻塞等待 preStop 处理函数执行完毕。

更多推荐

14、Kubernetes核心技术

本文发布于:2023-11-17 11:08:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1643993.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:核心技术   Kubernetes

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!