k8s生命周期-钩子函数

摘要:
如果失败,容器会被杀死,并根据RestartPolicy决定是否重启preStop:容器终止前执行,常用于资源清理。执行完成之后容器将成功终止,如果失败,容器同样也会被杀死。

容器生命周期钩子(Container Lifecycle Hooks)监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数。
支持两种钩子:
postStart: 容器创建后立即执行,注意由于是异步执行,它无法保证一定在 ENTRYPOINT 之前运行。如果失败,容器会被杀死,并根据 RestartPolicy 决定是 否重启
preStop:容器终止前执行,常用于资源清理。执行完成之后容器将成功终止,如果失败,容器同样也会被杀死。在其完成之前 会阻塞删除容器的操作
钩子的回调函数支持三种方式定义动作:
exec:在容器内执行命令,如果命令的退出状态码是 0 表示执行成功,否则表示失败

lifecycle:
    postStart:
      exec:
        command:
        -cat
        - /tmp/healthy

httpGet:向指定 URL 发起 GET 请求,如果返回的 HTTP 状态码在 [200, 400) 之间表示请求成功,否则表示失败

lifecycle:
    postStart:
      httpGet:
        path: /login   # URI地址
        port: 80# 端口号
        host: 192.168.126.100# 主机地址
        scheme: HTTP   # 支持的协议,http或https

# http://192.168.126.100:80/login

TCPSocket:在容器尝试访问指定的socket

lifecycle:
    postStart:
      tcpSocket:
        port: 8080

演示:

[root@k8s-master ~]# vim pod-hook-exec.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-hook-exec
  namespace: test
spec:
  containers:
  - name: main-container
    image: nginx:1.17.1ports:
    - name: nginx-port
      containerPort: 80lifecycle:
      postStart:
        exec:    # 在容器启动的时候执行一个命令,修改nginx默认首页内容
          command: ["/bin/sh","-c","echo postStart... > /usr/share/nginx/html/index.html"]
      preStop:
        exec:    # 在容器停止之前停止nginx服务
          command: ["/usr/sbin/nginx","-s","quit"]

[root@k8s-master ~]# kubectl create -f pod-hook-exec.yaml
pod/pod-hook-exec created
[root@k8s-master ~]# kubectl get pod -n test -o wide
NAME            READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
pod-hook-exec   1/1     Running   0          19s   10.244.2.31   k8s-node02   <none>           <none>[root@k8s-master ~]# curl 10.244.2.31postStart...

免责声明:文章转载自《k8s生命周期-钩子函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇winform程序中界面的跳转问题25.allegro中模块复用[原创]下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Docker修改容器配置导致启动失败的解决方法

我们通常会遇到修改容器内的配置问题,改的是容易。但改完之后容器起不来了,那就可难受了。当然我们也可以重新构建容器,一切都重新来一遍。但这真的是得不偿失,一个小小的配置,弄这么大的动静。还有一种就是把修改容器的配置,然后重启容器。当然之前的配置导致容器是起不来的,我们没有办法进入到容器中去。所以我们就直接将容器内的配置复制到我们的本地,在本地完成修改后再复制...

VMware Tanzu已融合云原生与K8s 市场前景尚不确定

Tanzu是什么? Tanzu 结合了Wavefront IT监控的项目和产品,VMware于2017年5月收购了该软件,并加入了Cloud Foundry PaaS实用工具。VMware在2019年12月收购的部分产品集合都改成为Tanzu。例如,VM的Pivotal Cloud Foundry现在称为VMware Tanzu应用程序服务。 适用于Kub...

React-Native性能优化点

shouldComponentUpdate 确保组件在渲染之后不需要再更新的,即静态组件,尽量在其中增加shouldComponentUpdate方法,防止二次消耗所产生的性能消耗 shouldComponentUpdate() { //完全静态的组件,无需更新 return false; } key key是react的一个特殊的属性...

使用Microsoft的IoC框架:Unity来对.NET应用进行解耦

1、IoC/DI简介 IoC 即 Inversion of Control,DI 即Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详细的说明可参见大牛Martin Fowler的强文http://martinfowler.com/articles/injection.html,借用Holly...

Linux性能优化实战学习笔记:第四十六讲

一、上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU、内存、文件系统和磁盘 I/O、以及网络的性能分析和优化。相信你已经掌握了这些基础模块的基本分析、定位思路,并熟悉了相关的优化方法。 接下来,我们将进入最后一个重要模块—— 综合实战篇。这部分实战内容,也将是我们对前面所学知识的复习和深化。 我们都知道,随着 Kubernetes、Do...

k8s v1.19.1 修改系统镜像地址过程记录

1.系统镜像列表 k8s.gcr.io/kube-apiserver:v1.19.1 k8s.gcr.io/kube-scheduler:v1.19.1 k8s.gcr.io/kube-controller-manager:v1.19.1 k8s.gcr.io/kube-proxy:v1.19.1 k8s.gcr.io/pause:3.2 k8s.gcr....