`
lykops
  • 浏览: 86245 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

kubernetes--优雅删除资源对象

 
阅读更多

本文基于kubernetes 1.5.2版本编写

当用户请求删除含有pod的资源对象时(如RC、deployment等),K8S为了让应用程序优雅关闭(即让应用程序完成正在处理的请求后,再关闭软件),K8S提供两种信息通知:

1)、默认:K8S通知node执行docker stop命令,docker会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间,或者默认超时时间(30s),会继续发送SIGKILL的系统信号强行kill掉进程。

2)、使用pod生命周期(利用PreStop回调函数),它执行在发送终止信号之前。

默认情况下,所有的删除操作的优雅退出时间都在30秒以内。kubectl delete命令支持--grace-period=的选项,以运行用户来修改默认值。0表示删除立即执行,并且立即从API中删除pod这样一个新的pod会在同时被创建。在节点上,被设置了立即结束的的pod,仍然会给一个很短的优雅退出时间段,才会开始被强制杀死。

pod生命周期例子

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: lykops-grace
 labels:
    app:lykops
spec:
 replicas: 1
 template:
   metadata:
     labels:
       app: lykops-grace
   spec:
     containers:
     - name: lykops-grace
       image: centos:nginx
       lifecycle:
         preStop:
           exec:
             # nginx -s quit gracefully terminate while SIGTERM triggers a quick exit
             command: ["/usr/local/nginx/sbin/nginx","-s","quit"]
        ports:
         - name: http
           containerPort: 80
分享到:
评论

相关推荐

    linux-用于Kubernetes操作的Clojure工具

    1. **部署应用**:通过定义Clojure数据结构来描述应用的容器化配置,如Pod、Deployment、Service等,然后使用Keenest-Rube将这些配置转化为Kubernetes资源对象并部署到集群。 2. **动态扩展**:根据业务需求,可以...

    kube-janitor:在配置了TTL之后(生存时间)清理(删除)Kubernetes资源

    在Kubernetes生态系统中,资源管理是一项关键任务,它涉及到如何有效地创建、更新和删除各种对象,如Pods、Services、Deployments等。`kube-janitor`是一个实用工具,专门设计用于在配置了TTL(Time To Live)之后...

    23道Kubernetes面试题.pdf

    在日常的管理任务中,用户会频繁使用kubectl命令行工具来添加、修改、删除资源对象的标签。 DaemonSet确保全部(或者某些)节点上运行一个Pod的副本,这对于那些需要在每个节点上都运行的守护进程来说非常有用,...

    Helm-Chart-Java 自定义常用模版

    每个文件都遵循Helm的模板语言,可能使用Go模板语法来动态生成Kubernetes对象。通过调整这些模板参数,你可以根据具体需求定制Java微服务的部署配置。 总结来说,这个Helm图表为Java微服务提供了全面的Kubernetes...

    开源项目-rook-rook.zip

    通过将存储资源抽象成 Kubernetes 资源对象,Rook 可以轻松地在 Kubernetes 集群中部署和运维存储服务。 Rook 支持多种存储技术,如 Ceph、OpenEBS 和 NFS,允许用户根据具体需求选择合适的后端存储解决方案。Ceph ...

    zio-k8s:Kubernetes API的惯用ZIO客户端

    5. **资源管理**:通过 zio-k8s,开发者可以方便地创建、读取、更新和删除 Kubernetes 资源,如创建新的服务部署、监控 pod 状态或更新配置。 6. **错误处理**:ZIO 的错误处理机制使得 zio-k8s 在执行 Kubernetes ...

    WordPress_On_K8s_Cluster

    - **资源优化**:Kubernetes可以智能调度Pod,避免资源浪费,提高整体集群效率。 - **简化更新**:通过Deployment的滚动更新,无需停机即可完成WordPress及其依赖的升级。 总之,将WordPress部署到Kubernetes集群是...

    银行账户管理系统客户端服务器

    在银行账户管理系统中,Java的面向对象特性有助于模块化设计,异常处理机制保证了程序的稳定性,而多线程则有利于并发处理。 4. **数据库管理**:系统通常会使用关系型数据库如MySQL、Oracle或PostgreSQL存储账户...

    forum_api

    例如,GET用于获取信息,POST用于创建新内容,PUT用于更新已有内容,而DELETE则用于删除资源。 2. **Spring框架**:作为Java开发中的主流框架,Spring可能被用作基础架构,尤其是Spring Boot,它可以简化初始设置并...

Global site tag (gtag.js) - Google Analytics