范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Kubernetes的健康监测机制以及常见ExitCode问题分析探索篇

  kubernetes进行Killed我们服务的问题背景
  无论是在微服务体系还是云原生体系的开发迭代过程中,通常都会以Kubernetes进行容器化部署,但是这也往往带来了很多意外的场景和情况。例如,虽然我们已经将JVM堆内存设置为小于Docker容器中内存及K8S的Pod的内存,但是还是会被K8s给无情的杀掉(Kill -9 / Kill -15)Killed。当发生了Killed的时候,我们该如何分析和判断呢?在此我们介绍一下K8s的Killed的Exit Code编码。 kubernetes健康检测体系之探针
  K8s中的探针用来对pod中容器的状态进行检测,有3种探针,存活探针、就绪探针、启动探针。
  kubernetes如何监控和管理我们的Pod的运行状态
  Kubernetes中的健康检查主要使用 就绪性探针(readinessProbes)  和 存活性探针(livenessProbes)  来实现,service即为负载均衡,k8s保证service后面的pod都可用,是k8s中自愈能力的主要手段,主要基于这两种探测机制,可以实现如下需求:异常实例自动剔除,并重启新实例 多种类型探针检测,保证异常pod不接入流量 不停机部署,更安全的滚动升级 存活探针 — livenessProbes
  kubelet使用  存活探针  来确定什么时候要重启容器。 例如,存活探针 可以探测到应用死锁(应用程序在运行,但是无法继续执行后面的步骤)情况,重启这种状态下的容器有助于提高应用的可用性,即使其中存在缺陷。就绪探针 — readinessProbes
  kubelet使用 就绪探针 可以知道容器何时准备好接受请求流量,当一个 Pod 内的所有容器都就绪时,才能认为该 Pod 就绪。 该指针用来指示容器是否准备好为请求提供服务。如果就绪态探测失败,kubelet将该Pod提供的所有服务的endpoint列表中删除该Pod的 IP地址。与存活探针的区别
  当容器未通过检查准备,则不会被终止或重新启动。存活探针通过杀死异常的容器并用新的容器去替代他们的工作,而就绪探针确保只有准备好处理请求的pod才能在服务集群中。 启动探针 — startupProbes( 1.17 版本新增)
  kubelet使用 启动探针 来了解应用容器何时启动。 如果配置了这类探针,你就可以控制容器在启动成功后再进行存活性和就绪态检查, 确保这些存活、就绪探针不会影响应用的启动。
  启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被杀掉  ,如:使用了启动探针,则所有其他探针都会被禁用,直到此探针成功为止。如果启动探测失败,kubelet将杀死容器,而容器依其重启策略进行重启。 探针的3种机制
  每种探测机制支持三种健康检查方法,分别是命令行exec,httpGet和tcpSocket,其中exec通用性最强,适用与大部分场景,tcpSocket适用于TCP业务,httpGet适用于web业务。 HTTP GEt:该类型的探针通过容器的IP地址、端口号及路径调用 HTTP Get请求,如果响应的状态码大于等于200且小于400,则认为容器 健康。 TcpSocket:该类型的探针尝试与容器指定端口建立TCP连接,如果端口打开,则诊断被认为是成功的。 Exec(自定义健康检查):该类型的探针在容器内执行任意的命令,如果命令退出时返回码为0,则认为诊断成功。 配置和设定livenessProbes探针
  通过在yaml文件中pod的spec部分的containers里面添加一个字段livenessProbe来添加存活指针: livenessProbe执行模式执行探针控制(httpGet)apiVersion: v1 kind: Pod metadata:   labels:     test: liveness   name: liveness-http spec:   containers:   - name: liveness     image: registry.k8s.io/liveness     args:     - /server     livenessProbe:       httpGet:         path: /healthz         port: 8080         httpHeaders:         - name: Custom-Header           value: Awesome       initialDelaySeconds: 3       periodSeconds: 3 复制代码
  Exec执行模式执行探针控制(exec)apiVersion: v1 kind: Pod metadata:   labels:     test: liveness   name: liveness-exec spec:   containers:   - name: liveness     image: registry.k8s.io/busybox     args:     - /bin/sh     - -c     - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600     livenessProbe:       exec:         command:         - cat         - /tmp/healthy       initialDelaySeconds: 5       periodSeconds: 5 复制代码livenessProbe执行模式执行探针控制(tcpSocket)apiVersion: v1 kind: Pod metadata:   name: goproxy   labels:     app: goproxy spec:   containers:   - name: goproxy     image: registry.k8s.io/goproxy:0.1     ports:     - containerPort: 8080     readinessProbe:       tcpSocket:         port: 8080       initialDelaySeconds: 5       periodSeconds: 10     livenessProbe:       tcpSocket:         port: 8080       initialDelaySeconds: 15       periodSeconds: 20 复制代码
  每次探测都将获得以下三种结果之一: Success(成功):表示容器通过了诊断。 Failure(失败):表示容器未通过诊断。 Unknown(未知):表示没有正常进行且诊断失败,因此不会采取任何行动。 容器退出状态码的区间
  Exit Codes的取值范围必须在0-255之间。可以参考:tldp.org/LDP/abs/htm…
  0:表示正常退出 1-128:一般程序自身原因导致的异常退出状态区间在 1-128 (这只是一般约定,程序如果一定要用129-255的状态码也是可以的) 129-255:外界中断将程序退出的时候状态码区间在129-255,(操作系统给程序发送中断信号,比如 kill -9 是 SIGKILL) 查看 Pod 退出状态码$ kubectl describe pods ${pod-name} 复制代码
  如下图所示:
  Exit Code 0
  退出代码0表示特定容器没有附加前台进程,该退出代码是所有其他后续退出代码的例外,这不一定意味着发生了不好的事情。如果开发人员想要在容器完成其工作后自动停止其容器,则使用此退出代码。比如:kubernetes job在执行完任务后正常退出码为 0 Exit Code 1
  程序错误,或者Dockerfile中引用不存在的文件,如 entrypoint中引用了错误的包程序错误可以很简单,例如 "除以0",也可以很复杂,比如空引用或者其他程序 crash Exit Code 139
  Exit Code 139: Indicates failure as container received SIGSEGV
  表明容器收到了 SIGSEGV 信号,无效的内存引用,对应kill -11,一般是代码有问题,或者 docker 的基础镜像有问题 Exit Code 143
  Exit Code 143: Indicates failure as container received SIGTERM
  表明容器收到了 SIGTERM 信号,终端关闭,对应kill -15,一般对应 docker stop 命令,有时docker stop也会导致Exit Code 137,发生在与代码无法处理SIGTERM的情况下,docker进程等待十秒钟然后发出 SIGKILL 强制退出。 Exit Code 137
  Exit Code 137: Indicates failure as container received SIGKILL
  表明容器收到了 SIGKILL 信号,进程被杀掉,对应kill -9,引发SIGKILL的是docker kill。这可以由用户或由docker守护程序来发起,手动执行:docker kill(Manual intervention or ‘oom-killer’ [OUT-OF-MEMORY]) 被手动干预杀死进程,或者违反系统限制被杀
  137 比较常见,如果 pod 中的limit 资源设置较小,会运行内存不足导致 OOMKilled,此时state 中的 "OOMKilled" 值为true,你可以在系统的 dmesg -T 中看到 oom 日志  内存溢出问题
  此状态码一般是因为 pod 中容器内存达到了它的资源限制(resources.limits),一般是内存溢出(OOM),CPU达到限制只需要不分时间片给程序就可以。因为限制资源是通过 linux 的 cgroup 实现的,所以 cgroup 会将此容器强制杀掉,类似于 kill -9,此时在 describe pod 中可以看到 Reason 是 OOMKilled
  还可能是宿主机本身资源不够用了(OOM),内核会选取一些进程杀掉来释放内存,不管是 cgroup 限制杀掉进程还是因为节点机器本身资源不够导致进程死掉,都可以从系统日志中找到记录:
  ubuntu 的系统日志在 /var/log/syslog,centos的系统日志在 /var/log/messages,都可以用 journalctl -k 来查看系统日志。

太子朱标究竟多厉害?为何没有兄弟敢和他争皇位太子朱标究竟有多厉害?为何他的25个兄弟包括朱棣在内,都不敢在他活着的时候造反,如果当初朱棣,在他活着的时候没忍住野心提前造反,大明王朝的历史是否会被改写?太子朱标大明最稳太子朱元瞿秋白英雄楷模事迹PPT课件瞿秋白同志是伟大的马克思主义者,理论家和宣传家。瞿秋白同志忠诚宁死不屈,牺牲时年仅36岁。在短暂而非凡的一生中,他为民族独立不懈奋斗艰辛探索,留下宝贵精神财富。他的精神和思想至今熠刘表帐下有四大猛将,有2人可打退关羽,一人能挡住张飞东汉末年,群雄逐鹿,属于刘氏家族的汉王朝危在旦夕。北方有虎视眈眈的曹操,南方三州由刘姓宗族把持,而这三州之中当属荆州实力最强,荆州的主人则是皇族宗亲刘表。在刘表的荆州王国中,除了钱三长治河,一泓清水入黄河一线讲述三长治河,一泓清水入黄河讲述人山西省吕梁市柳林县石西乡党委书记黄河柳林县石西乡段乡级河长贺世平眼下正是黄河沿岸最美的季节。行走在黄河一号旅游公路上,不仅能闻到成片红枣林散发滨州打造具有国际影响力的黄河文化旅游带深秋时节,滨州黄河小街湾景区游人如潮,游客漫步在美景中,或伫立岸边凭栏远眺,尽览与黄河遥相呼应的壮阔气象每逢假期,气势恢宏的黄鹤楼更加热闹,游人三五成群来此观光旅游,品读着黄河文化11月7日甘肃1073(兰州1065),详情现将11月7日024时甘肃省新冠肺炎疫情信息公布如下本地疫情11月7日024时,甘肃省新增确诊病例10例,均在兰州市(城关区8例七里河区2例),其中9例(城关区7例七里河区2例)为德国瑞士奥地利游记(13)因特拉肯欧洲著名的度假胜地到瑞士旅游只要登少女峰,一定会经过因特拉肯。2012年10月27日我是从卢塞恩到因特拉肯,然后去少女峰今天我是从少女峰下山之后从格林德尔瓦尔德到因特拉肯。我把两次到因特拉肯的情况合在嘉塘草原观察动物来源人民日报海外版嘉塘草原。邓星羽摄火锅在撒欢。邓星羽摄藏野驴和远处的牦牛群。邓星羽摄藏系绵羊。日代摄我们来到嘉塘,是希望了解草原。嘉塘位于青海省玉树藏族自治州称多县,这片雅砻江源曹魏肱骨恶来典韦如果说许褚还能够在历史上留下浓厚的一笔,保护着曹操在各种险要的情况下安然逃生,那典韦,只能说是曹操的遗憾之一了,作为最早跟随曹操的一批勇士,典韦孤身一人而没有家族的牵挂,而且对曹操为什么3亿多汉人会被300万满清统治近276年?只有4个理由清朝满人的总人口大约在300万左右,其中20万人是部队,而当时的汉人已有3亿左右,如此悬殊的比例,清朝却统治了天下276年,直到列强进入,清朝才分崩离析,这是为什么呢?满清虽然灭了为何明朝皇帝普遍表现平庸,却能够维持近300年的国祚?在中国漫长的历史当中,改朝换代似乎已经是司空见惯的事情,尤其是秦始皇统一中国之后,君主制王朝在不断的灭亡与建立中循环。一般来说一个朝代如果能有两百多年的历史已经算是长寿王朝了。汉朝
9月6日华为Mate50发布,近150万人预约,预售5099元买到什么品质华为官方宣布,Mate50系列及全场景新品秋季发布会将于9月6日举行,主题是破晓而出,巅峰相见。海报中还有一个金色圆环,预测是华为Mate50Pro后置相机模组的标志性元素。随着发官宣索尼影像新品定档9月6日撞上华为新机发布会8月30日晚,索尼影像圈宣布,索尼影像新品将于9月6日2200发布,宣传语为让电影感更自由,看来新品和电影机有关。索尼影像新品定档9月6日2200有消息称,这次索尼可能会发布一款P下周分红股票一览表2022年8月29日至2022年9月2日代码名称送转总比例转股比例现金分红比例股息率每股收益每股净资产每股公积金每股未分配利润净利润同比增长总股本股权登记日除权除息日300525hr博思软件10转5。010转5。010派住房公积金要尽早提取?公积金有新政,早知早受益很多人在找工作的时候都会寻找那些具有住房公积金的单位,对于大家而言,之所以会有这样的想法,就是因为现在的房价非常的高,很多人都非常迫切的需要有住房公积金来买房,尽管有些人的住房公积真实不造作,这是我的22年EDC本内容来源于什么值得买APP,观点仅代表作者本人作者善生的善生真实,就是做好的流量密码,这是大妈经常说的一句话。我看过很多EDC,有财富自由的年入百万的中年大叔的职场萌新的。评论褒目前已经破产和获批破产的银行已经有六家,我们储户该怎么办?截至目前,国内已有四家倒闭或进入破产程序的银行金融机构,分别是海南发展银行,汕头市商业银行河北省肃宁县尚村农信社包商银行。,还有两家银行已经获批破产分别是辽阳农村商业银行辽宁太子河人生无大事,泪中带笑人生大事,笑中带泪孤独是好还是坏,取决于是你选择孤独还是孤独选择了你。低到尘埃里的人的孤独是一种选择孤独的权利也没有的孤独。出口想说的话似乎都是在讨好,主动联系想念的人似乎都是在麻烦,一种讨人嫌的多蕴含人生哲理的精选文案,句句催人奋发图强1你努力了成绩没有多大改观,这并不能证明你没用,这时候你应该更加努力,要相信,日子总会阳光明媚的。2人生不是等价交换,无论以什么样的状态,一定要做到,以不变应万变。3想陪你的人,多改革开放以来,中国都是如何度过经济危机的?一最近,任正非在华为内部论坛发表的文章流出,引起全网的议论。任正非在文章里说未来十年应该是一个非常痛苦的历史时期,全球经济会持续衰退,全世界的经济在三到五年内都不可能好转,加上疫情用通俗的语言说清楚当下经济的核心问题都有哪些各种高级别救市政策越来越密集,市场上是国家队下场托举企业,体制内则是中央队伍下省稳大盘。据新华社8月23日消息,国务院将开展第9次大督查,到19个省份围绕着稳住经济大盘展开工作,内Redmi11将至搭载天玑700外观是亮点Redmi的入门数字系列新机即将迎来更新。Redmi的海外社交账号今日宣布,将于9月6日在印度市场发布Redmi11系列新品,新机将会被命名为Redmi11Prime,与此同时,官