优雅删除
什么是优雅删除
当用户请求删除含有pod的资源对象时(如RC、Deployment等),如果该资源对象有正在处理的请求,那么等这些正在处理的请求完成以后再删除资源对象,就称为优雅删除。
怎么使用优雅删除
其实怎么使用优雅删除,kubernetes已经在基层做好建设。Kubectl delete:根据resource名或label删除resource。例如:
kubectl delete po rc-nginx-btv4j kubectl delete po -lapp=nginx-2
当Kubernetes通知node执行docker stop命令,docker会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间(Pod中的terminationGracePeriodSeconds参数值,默认30s),会继续发送SIGKILL的系统信号强行kill掉进程。
您可以使用--grace-period=<seconds>来覆盖的默认值。
kubectl delete po rc-nginx-btv4j --grace-period=60
要强制删除资源,需指定--force flag,且设置周期为0。如果执行强制删除Pod,则调度程序会在节点释放这些Pod之前将新的Pod放在这些节点上,并使之前Pod立即被逐出。
如下示例表示将强制立马删除pod:
kubectl delete po rc-nginx-btv4j --grace-period=0 --force

执行delete命令时不会检查资源版本,如果在执行delete操作时有人进行了更新操作,那么更新操作将连同资源一起被删除。
