kubernetes集群之Pod说能不能让我体面的消亡呀?

由于 Pod 所代表的是在集群中节点上运行的进程,当不再需要这些进程时允许其体面地终止。

1、如果 preStop 回调所需要的时间长于默认的体面终止限期会发生什么?

2、 Pod 的体面终止限期是默认值是多少?

3、超出终止宽限期限时,kubelet 会触发强制关闭过程,这个过程是怎么样的?

4、强制删除 StatefulSet 的 Pod,会出现什么问题?为什么强制删除 StatefulSet 的 Pod可能会违背至多一个Pod原则?

囧么肥事-胡说八道

1、Pod 的体面终止限期是默认值是多少?

默认情况下,所有的删除操作都会附有 30 秒钟的宽限期限。

kubectl delete 命令支持 --grace-period=<seconds> 选项,允许你重载默认值, 设定自己希望的期限值。

将宽限期限强制设置为 0 意味着立即从 API 服务器删除 Pod。

如果 Pod 仍然运行于某节点上,强制删除操作会触发 kubelet 立即执行清理操作。

说明: 你必须在设置 --grace-period=0 的同时额外设置 --force 参数才能发起强制删除请求。

2、Pod体面终止过程是怎么样的?

Pod正常终止,容器运行时会发送一个 TERM 信号到每个容器中的主进程。kubelet 开始本地的 Pod 关闭过程,API 服务器中的 Pod 对象被更新,记录涵盖体面终止限期在内 Pod 的最终死期30秒,超出所计算时间点则认为 Pod 已死(dead),之后 Pod 就会被从 API 服务器上移除。

拆分理解

  1. 发起删除一个Pod命令后系统默认给30s的宽限期,API系统标志这个Pod对象为Terminating(终止中)状态
  2. kublectl发现Pod状态为Terminating则尝试执行preStop生命周期勾子,并可多给2s的宽限期
  3. 同时控制面将Pod中svc的endpoint中移除
  4. 宽限期到则发送TERM信号,API 服务器删除 Pod 的 API 对象,同时告诉kubelet删除Pod资源对象
  5. Pod还不关闭再发送SIGKILL强制关闭,kubelet 也会清理隐藏的 pause 容器

2、超出终止宽限期限时,kubelet 会触发强制关闭过程,这个过程是怎么样的?

直接执行强制删除操作时,API 服务器不再等待来自 kubelet 的、关于 Pod 已经在原来运行的节点上终止执行的确认消息。

API 服务器直接删除 Pod 对象,无论强制删除是否成功杀死了 Pod,都会立即从 API 服务器中释放该名字。

不过在节点侧,被设置为立即终止的 Pod 仍然会在被强行杀死之前获得一点点的宽限时间。

注意:这里的强制删除主要说的是从API服务器移除Pod对象

ReplicaSets和其他工作负载资源不再将 Pod 视为合法的、能够提供服务的副本

节点端依然是可以允许Pod体面消亡

3、 如果 preStop 回调所需要的时间长于默认的体面终止限期会发生什么?

如果 Pod 中的容器之一定义了 preStop 回调勾子, kubelet 开始在容器内运行该回调逻辑。如果超出体面终止限期时,preStop 回调逻辑 仍在运行,kubelet 会请求给予该 Pod 的宽限期一次性增加 2 秒钟

4、强制删除 StatefulSet 的 Pod,会出现什么问题?为什么强制删除 StatefulSet 的 Pod可能会违背至多一个Pod原则?

强制删除不会等待来自 kubelet 对 Pod 已终止的确认消息。 无论强制删除是否成功杀死了 Pod,它都会立即从 API 服务器中释放该名字

这将让 StatefulSet 控制器可以创建一个具有相同标识的替身 Pod;因而可能导致正在运行 Pod 的重复。

StatefulSets 可用于运行分布式和集群级的应用,这些应用需要稳定的网络标识和可靠的存储。 这些应用通常配置为具有固定标识固定数量的成员集合。

具有相同身份的多个成员可能是灾难性的,并且可能导致数据丢失 (例如:票选系统中的脑裂场景)。


《Kubernetes-企业级容器应用托管》-持续胡说八道

第一段:推荐阅读:【云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?】

第二段:推荐阅读:【趁着同事玩游戏偷偷认识k8s一家子补补课】

第三段:推荐阅读:【Kubernetes家族容器小管家Pod在线答疑】

第四段:推荐阅读:【同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念?】

第五段:推荐阅读:【探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器?】

第六段:推荐阅读:【kubernetes集群之Pod说能不能让我体面的消亡呀?】

第七段:待更新?推荐休闲阅读:【囧么肥事】

kubernetes集群之Pod说能不能让我体面的消亡呀?的更多相关文章

  1. Harbor快速部署到Kubernetes集群及登录问题解决

    Harbor(https://goharbor.io)是一个功能强大的容器镜像管理和服务系统,用于提供专有容器镜像服务.随着云原生架构的广泛使用,原来由VMWare开发的Harbor也加入了云原生基金 ...

  2. 三十二、kubernetes集群的网络实现

    Kubernetes集群的网络实现 CNI介绍及集群网络选型 容器网络接口(Container Network Interface),实现kubernetes集群的Pod网络通信及管理.包括: CNI ...

  3. kubernetes集群pod使用tc进行网络资源限额

    kubernetes集群pod使用tc进行网络资源限额 Docker容器可以实现CPU,内存,磁盘的IO限额,但是没有实现网络IO的限额.主要原因是在实际使用中,构建的网络环境是往超级复杂的大型网络. ...

  4. Kubernetes集群搭建过程中遇到的问题

    1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating &quo ...

  5. Kubernetes集群初探

    上文我们在一台虚机上演示了Kubernetes基于redis和docker的guestbook留言簿案例,本文我们将通过配置Kubernetes集群的方式继续深入研究.集群组件安装如下配置. IP N ...

  6. kubernetes集群部署

    鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ...

  7. Centos7上安装Kubernetes集群部署docker

    一.安装前准备1.操作系统详情需要三台主机,都最小化安装 centos7.3,并update到最新 [root@master ~]# (Core) 角色 主机名 IPMaster master 192 ...

  8. 在Kubernetes集群中使用calico做网络驱动的配置方法

    参考calico官网:http://docs.projectcalico.org/v2.0/getting-started/kubernetes/installation/hosted/kubeadm ...

  9. 使用acs-engine在Azure中国区部署kubernetes集群详解

    转载请注明出处:http://www.cnblogs.com/wayneiscoming/p/7649642.html 1. acs-engine简介 ACS是微软在2015年12月推出的一项基于容器 ...

随机推荐

  1. HDU 1009 FatMouse' Trade (贪心)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009 题目大意:肥鼠准备了 磅的猫粮,准备和看管仓库的猫交易,仓库里装有他最喜爱的食物 豆.仓库有 个 ...

  2. C 库函数 - pow()

    1.C 标准库 - <math.h> 2.C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 xy. 3.pow() 函数的声明. dou ...

  3. 关于Jmeter线程数Ramp-Up.循环次数的理解和实验数据

    1. 关于线程组参数 线程组:即一个线程组实例里面包括多个串行的请求或动作.一个线程组的从启动到结束的时间取决于你线程中的步骤数量. 线程数:即用户数,在Ramp-up时间内(包括循环),简单把线程数 ...

  4. ecos matlab版本安装

    官网链接 github地址 1.注意不仅要下载matlab版本,同时还要下载c版本,因为matlab版本缺少第三方软件,将两个版本解压缩后将c版本下的文件夹external,ecos_bb,inclu ...

  5. android+opencv+opencl: cv::dft()的opencl版本的性能分析

    在小米mix 2s + 高通骁龙 845 + Adreno 630 上测试了opencl版本的cv::dft(). 测试数据 先看表格里面的描述: 名称 函数名 最大时间(ms) 平均时间(ms) 说 ...

  6. C++内嵌汇编 教程1

    注:本文的所有代码是在我自己的VS2008中测试的,由于环境的差别,不能保证能在所有的编译器上运行. 1.内嵌汇编介绍 在C++中,可以通过__asm关键字来嵌入汇编语言.例如 int main(){ ...

  7. Qt中添加静态库.lb,.a和动态库.dll,.so,头文件和.cpp文件

    添加步骤 1.-Qt Creator中,"项目"------"添加库"2.把静态库和动态库文件放到项目文件夹中3.在.pro文件中会添加如下代码: - 添加动态 ...

  8. Postman 支持 gRPC 了!继续领先 ~

    最近国产API管理工具比较热,几款产品在API管理层面做得也都还不错,但主要还是对HTTP相关的API管理,毕竟这类API的应用目前还是最为广泛的.但显然,还有不少其他应用场景目前没有覆盖到,DD在之 ...

  9. Android开发-适配器

    适配器非常关键,它是连接页面和和数据源之间的桥梁,通过适配器,可以将数据库中的数据显示在页面上. 记账本适配器 记账类型选择适配器 日历选择适配器 还有图标适配器等

  10. 学习Java第16天

    今天学习了HTML的表格,列表标签及表单. 顺序有点乱,明天学习swing awt,当时这部分大概过了一下,明天看视频 主要问题还是新概念较多,需要多理解,多记忆.