本文基于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
分享到:
相关推荐
1. **部署应用**:通过定义Clojure数据结构来描述应用的容器化配置,如Pod、Deployment、Service等,然后使用Keenest-Rube将这些配置转化为Kubernetes资源对象并部署到集群。 2. **动态扩展**:根据业务需求,可以...
在Kubernetes生态系统中,资源管理是一项关键任务,它涉及到如何有效地创建、更新和删除各种对象,如Pods、Services、Deployments等。`kube-janitor`是一个实用工具,专门设计用于在配置了TTL(Time To Live)之后...
在日常的管理任务中,用户会频繁使用kubectl命令行工具来添加、修改、删除资源对象的标签。 DaemonSet确保全部(或者某些)节点上运行一个Pod的副本,这对于那些需要在每个节点上都运行的守护进程来说非常有用,...
每个文件都遵循Helm的模板语言,可能使用Go模板语法来动态生成Kubernetes对象。通过调整这些模板参数,你可以根据具体需求定制Java微服务的部署配置。 总结来说,这个Helm图表为Java微服务提供了全面的Kubernetes...
通过将存储资源抽象成 Kubernetes 资源对象,Rook 可以轻松地在 Kubernetes 集群中部署和运维存储服务。 Rook 支持多种存储技术,如 Ceph、OpenEBS 和 NFS,允许用户根据具体需求选择合适的后端存储解决方案。Ceph ...
5. **资源管理**:通过 zio-k8s,开发者可以方便地创建、读取、更新和删除 Kubernetes 资源,如创建新的服务部署、监控 pod 状态或更新配置。 6. **错误处理**:ZIO 的错误处理机制使得 zio-k8s 在执行 Kubernetes ...
- **资源优化**:Kubernetes可以智能调度Pod,避免资源浪费,提高整体集群效率。 - **简化更新**:通过Deployment的滚动更新,无需停机即可完成WordPress及其依赖的升级。 总之,将WordPress部署到Kubernetes集群是...
在银行账户管理系统中,Java的面向对象特性有助于模块化设计,异常处理机制保证了程序的稳定性,而多线程则有利于并发处理。 4. **数据库管理**:系统通常会使用关系型数据库如MySQL、Oracle或PostgreSQL存储账户...
例如,GET用于获取信息,POST用于创建新内容,PUT用于更新已有内容,而DELETE则用于删除资源。 2. **Spring框架**:作为Java开发中的主流框架,Spring可能被用作基础架构,尤其是Spring Boot,它可以简化初始设置并...