- pod的生命周期
- 迁移:无状态:新pod会有新的ip地址和主机名,stateful:保证一样的主机名和持久化状态,当然pod ip还是发生了改变。不建议是用ip构建应用关系,如果使用主机名构建关系,请使用statufulset。
- 非持久数据,pod迁移后,数据指定会丢失。因为,新的容器会启动一个全新的可写入层。
- 保存持久数据到pv卷中。
- 多容器pod,如果某个容器启动失败,会一直重启。
- pod启动顺序
- init容器
- 初始化容器,意味着向容器的存储卷写入数据,然后将存储卷挂载到主容器上。
- pod可以拥有任意数量的init容器,init顺序执行。最后一个执行完成后,才启动主容器。
-
initContainers: - name: init image: busybox command: - sh - -c - 'while true; do echo "Waiting for fortune service to come up...";'
- 合理使用就绪探针(Readiness)
- init容器
- 生命周期钩子
- 启动后钩子
- 【与主进程并行运行】
- 停止前钩子
- 先执行钩子,并在钩子执行完成后,向容器发送SIGTERM信号。如果没有优雅终止,则会被杀死。
- 不管执行成功与否,容器都会终止,如果未成功则告警。
- 需要注意容器:如何启动,使用ENTRYPOINT [“/mycommand”],这样进程将是容器主进程,而不是先启动一个 shell 作为主进程。
- 启动后钩子
- pod关闭
- 触发:API服务器删除pod对象触发的。
- 当API服务器接收到HTTP DELETE请求后,pod设置一个deletionTimestamp值,拥有deletionTimestamp的pod 开始停止。
- kubelet接到终止信息,开始终止pod中的每一个容器。kubelet会给每个容器一定的时间优雅地停止。这个时间叫做终止宽限期。
- 流程:
- 执行停止前钩子,等待它执行完毕
- 向容器的主进程发送SIGTERM信号
- 等待容器优雅关闭或者等待终止宽限期超时
- 如果容器没有优雅关闭,使用SIGKILL信号强制终止进程
- 设置终止宽限期
- spec.terminationGracePeriod,默认为30s
- 命令:kubectl delete po mypod –grace-period=5
- 强制:kubectl delete po mypod –grace-period=0 –force
- 如何妥善处理所有连接
- 开始时:理解服务和服务端点的工作原理
- pod启动,pod ip写入服务端点给服务。定义容器 就绪指针 ,保证就绪后在接收请求。
- 结束时:已接受未处理完请求,HTTP长连接。
- 回顾一下:API服务器接收到删除pod的请求之后,它首先修改etcd中的状态并把删除事件通知给观察者。其中两个观察者:kubelet和端点控制器(Endpoint Controller)。这两个事情并行。
- A事件:kubelet接收到pod终止通知->初始化关闭动作序列(执行停止钩子,发送SIGTERM信号,等待过期时间,如果超时SIGKILL杀死容器),如果应用理解停止接收请求,则客户端会返回Connection Refused错误。
- B事件:当 端点控制器 接收到pod要被删除的通知时,它从所有的pod所在的服务中移除这个pod的服务端点。它通过向API服务器发送rest请求来修改EndpointAPI对象。然后api会通知所有的客户端关注这个endpoint对象,其中一些观察者都是运行在工作节点上的 kube-proxy 服务。每个kube-proxy服务都会在自己的节点上更新iptables规则。以阻止新的连接转发到停止的pod上。一个重要细节: 移除iptables规则对已存在的连接没有影响 。已经连接的请求仍然可以发送额外请求。
- 问题:如果SIGTERM在iptables规则修改之前到达,这是请求到来后,就会报:连接拒绝类的错误。
- 执行时间线「关注」
- 解决办法:无解,唯一办法是给于kube-proxy足够长的时间完成它的工作。增大关闭超时时间,然后prestop做一些事情,提前优雅关闭。延迟,然后局部解决问题。
- 等待几秒,然后停止接收新的连接
- 关闭所有没有请求的长连接
- 等待所有的请求都完成
- 关闭应用
- 回顾一下:API服务器接收到删除pod的请求之后,它首先修改etcd中的状态并把删除事件通知给观察者。其中两个观察者:kubelet和端点控制器(Endpoint Controller)。这两个事情并行。
- 开始时:理解服务和服务端点的工作原理
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Network Algorithmics,
George Varghese / Morgan Kaufmann / 2004-12-29 / USD 75.95
In designing a network device, you make dozens of decisions that affect the speed with which it will perform - sometimes for better, but sometimes for worse. "Network Algorithmics" provides a complete......一起来看看 《Network Algorithmics,》 这本书的介绍吧!