首页 > 编程语言 >Node异常时Pod状态分析

Node异常时Pod状态分析

时间:2023-01-25 11:23:34浏览次数:46  
标签:Node 状态 set Name replicas kubelet Pod 异常

场景一:停止kubelet并恢复

操作和现象

操作

节点上运行Pod后把kubelet进程停掉。

现象 

node状态变为NotReady,不同类型的Pod情况不同。

Deployment

在默认容忍配置的300s之后,旧Pod一直处于Terminating状态,创建新Pod。因为没有节点可以调度,所以Pod处于Pending状态。

StatefulSet

Pod一直处于Terminating状态。

DaemonSet

Pod一直处于Running状态。

 

操作

10分钟后,启动kubelet进程。

现象

node状态变为Ready,不同类型的Pod情况不同。

Deployment

旧Pod被删除,新Pod处于Running状态。

StatefulSet

Pod被删除后重建。

DaemonSet

Pod不会被删除,Pod里面的容器会重新创建。

为什么StatefulSet Pod在node异常时没有重建?

在node controller中,除了daemonset pods外,都会调用delete pod api删除pod。
kubelet异常导致Pod Object一直无法从etcd中删除。
statefulset只会针对isFailed Pod(但现在Pod是Unkown状态)才会去delete Pod。

pkg/controller/statefulset/stateful_set_control.go

// delete and recreate failed pods
if isFailed(replicas[I]) {
	ssc.recorder.Eventf(set, v1.EventTypeWarning, "RecreatingFailedPod",
		"StatefulSetPlus %s/%s is recreating failed Pod %s",
		set.Namespace,
		set.Name,
		replicas[I].Name)
	if err := ssc.podControl.DeleteStatefulPlusPod(set, replicas[I]); err != nil {
		return &status, err
	}
	if getPodRevision(replicas[I]) == currentRevision.Name {
		status.CurrentReplicas—
	}
	if getPodRevision(replicas[I]) == updateRevision.Name {
		status.UpdatedReplicas—
	}
	status.Replicas—
	replicas[I] = newVersionedStatefulSetPlusPod(
		currentSet,
		updateSet,
		currentRevision.Name,
		updateRevision.Name,
		i)
}

场景二:节点产生磁盘压力

kubelet默认驱逐条件

磁盘压力是nodefs.available

操作

拷贝大文件后产生磁盘压力。

现象 

不同类型的Pod情况不同。

Deployment

旧Pod处于Evicted状态,新Pod处于Pending。

StatefulSet

新Pod处于Pending状态。

DaemonSet

新Pod处于Evicted状态。

节点因磁盘压力而被打上了不可调度污点,但是node状态还是Ready。

针对磁盘压力,kubelet会回收临时卷、删除没有使用的容器和镜像,驱逐Pod。

操作

删除大文件后释放磁盘压力,重启kubelet(快点上报状态)。

现象 

Pod恢复Running。

标签:Node,状态,set,Name,replicas,kubelet,Pod,异常
From: https://www.cnblogs.com/WJQ2017/p/17066768.html

相关文章

  • 适合编程初学者的开源云笔记系统(NodeJS版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言。左侧为前端版本:安卓、iOS、鸿蒙......
  • NodeJS - XSS-Attribute
    参考:https://owasp-skf.gitbook.io/asvs-write-ups/cross-site-scripting-attribute-xss-attribute/kbid-3-xss-attributef12看看修改color的值,英文句子就会改变颜色,这......
  • NodeJS - XSS-href
    参考:https://owasp-skf.gitbook.io/asvs-write-ups/cross-site-scripting-href-xss-href/kbid-3-xss-url输入https://www.baidu.com再点击visit,会跳转至百度页面,这里可能......
  • NodeJS - XSS
    首先进入/skf-labs-master/XSS文件夹下,执行命令:$npminstall$npmstart抓包看看内容查看源码app.post("/home",(req,res)=>{letuserInput=req.body.stri......
  • debian 安装 nodejs 当前版本
    参考https://github.com/nodesource/distributions/blob/master/README.md#debinstall InstallationinstructionsNode.jsv19.x:UsingUbuntucurl-fsSLhttps://de......
  • k8s node节点加入集群
    秘钥必须要对,不然加不了这个连接的秘钥是在k8s的master节点init完成之后最后面的那段,复制过来就行,如果忘记了,重新生成一个也可以......
  • 【学懂Java】(五)异常处理
    一.引入编写程序时会有各种各样的错误,例如该程序在被除数为0的时候,就会不正确。我们可以这样解决但是这样也有弊端:代码臃肿程序员要花很大精力“堵漏洞”程序员很难堵住所有......
  • 记录一次Spring事务线上异常
    Spring事务管理配置方式:XML模糊匹配,绑定事务管理注解,可对每个需要进行事务处理的方法单独配置,只需@Transactional,然后添加属性配置为简便,本文使用注解方式。Spring初始化时......
  • 4.Prometheus组件node_exporter
    1.node_exporter介绍2.二进制部署node_exporter3.docker部署node_exporter1.node_exporter介绍Node-exporter可以采集机器(物理机、虚拟机、云主机)的监控指标数据,能够......
  • Day10-包模块异常
    0-1变量和多态'''变量多态python中的变量(标识符),的类型是根据所代表的对象,进行自动推导得到的'''n=1print(type(n))n=3.14print(type(n))n=Trueprin......