当前位置: 首页 > wzjs >正文

北京做网站建设的公司嘉兴网站建设方案优化

北京做网站建设的公司,嘉兴网站建设方案优化,软件服务开发,固原网站建设公司k8s故障处理经典案例 问题描述 kubernetes版本:v1.22.5 部分Pod在新版本发布后一直处于ContainerCreating状态,经过kubectl delete命令删除后一直Terminating状态。 排查过程 遇到问题先查日志 首先进入宿主机,查看三个日志&#xff0c…

k8s故障处理经典案例

问题描述

kubernetes版本:v1.22.5

部分Pod在新版本发布后一直处于ContainerCreating状态,经过kubectl delete命令删除后一直Terminating状态。

排查过程

遇到问题先查日志

首先进入宿主机,查看三个日志,按照pod名称及imageid进行筛选。其中pod名称为khaos-guardian-bmzsk ,imageid1da9e4f1-a5d4-40db-b8bc-4db1d27ca458

  • kubelet

    日志:journalctl -u kubelet | grep khaos-guardian-bmzsk 

  • docker

    日志:journalctl -u docker | grep 1da9e4f1-a5d4-40db-b8bc-4db1d27ca458

  • 系统日志:cd /var/log && grep khaos-guardian-bmzsk  messages

花费了不少时间检索日志,实际上没有找到任何有用的信息。

配置细节排查

我们可以看到整个集群只有这个daemonsetpod出现过这个问题,其他的pod没有出现,那么可能问题出在这个daemonset的某些配置引发的这个问题。但这个daemonset的配置比较复杂,并且包含4container,所以这块排查起来很吃力,也比较浪费时间。经过细节的梳理,以及团队内部同学的协作,我们最终发现是有两个配置项引发的问题。

  • hostPID
  • lifecycle.postStart

hostPID

官方文档:https://kubernetes.io/docs/concepts/security/pod-security-standards/

配置到pod spec中,用于让Pod中的所有容器感知宿主机的进程信息,并且执行进程管理。

此外,相关联的还有一个shareProcessNamespace配置,也是配置到pod spec中,用于单podcontainer场景下让pod下的container相互感知pid,具体介绍:https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/

lifecycle.postStart

用于在指定container成功Running后执行一些自定义脚本,具体介绍:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/

相关联的docker bug

这里与hostPID/shareProcessNamespace相关的有一个dockerbug:https://github.com/kubernetes/kubernetes/issues/92214

当开启进程信息共享时,如果对docker容器执行exec命令,并且docker容器先于exec进程退出,那么此时exec的执行会卡住。

docker bug复现过程

通过docker run运行一个容器:

docker run -d --pid=host --rm --name nginx nginx

在另一个终端执行docker exec指令:

docker exec -it nginx sh

随后kill容器:

docker kill nginx

可以看到当kill掉容器后,对应的exec进程此时卡住了,无法退出,只能强行关闭终端解决。 

Kubernetes Pod管理细节

如果想要了解这个docker bugpod生命周期的影响,我们来看看kubernetes源码中的pod创建流程。首先了解一个背景,kubernetes的每一个podkubelet中都对应有一个goroutine一一对应来管理维护其reconcile,即任何pod spec的变更或者宿主机container status的变化都由该goroutine来保证执行和同步。

SyncPod

每当Pod Spec变化时,例如创建时,会按照EphemeralContainers、InitContainers、Containers依次执行容器创建。具体参考:https://github.com/kubernetes/kubernetes/blob/b722d017a34b300a2284b890448e5a605f21d01e/pkg/kubelet/kuberuntime/kuberuntime_manager.go#L1048

这种创建虽然在kubernetes中是顺序执行的,但是宿主机的容器启动成功却是异步的,不能保证顺序性。有的容器可能在最开始执行创建,但是可能在最后才运行成功。

但是,如果容器中存在PostStart脚本,那么将会阻塞后续容器的创建,需要等待PostStart脚本执行完成后才会继续执行。具体参考:https://github.com/kubernetes/kubernetes/blob/b722d017a34b300a2284b890448e5a605f21d01e/pkg/kubelet/kuberuntime/kuberuntime_container.go#L297

如果底层是docker,那么这里使用的便正是docker exec命令来实现的PostStart自定义脚本执行。

解决问题

找到问题根因后,解决目前集群中TerminatingPod就比较简单了。

step1:检索出TerminatingPod

kubectl get pod -n xxx -owide | grep Terminating

step2:进入宿主机干掉docker容器

kubectl node-shell x.x.x.x docker ps -a | grep xxx docker rm -f xxx exit

step3:退出宿主机,强删对应的Pod

kubectl delete -n xxx pod/xxx --force

操作记录:

问题总结

  • 尽量不要使用docker作为底层容器管理工具。

  • 尽量不要在pod中使用postStart自定义脚本。


文章转载自:

http://hM8mXUo5.xxknq.cn
http://1EOjDVha.xxknq.cn
http://nRben4Rv.xxknq.cn
http://1OJyX8aM.xxknq.cn
http://n0dWSks6.xxknq.cn
http://6V5eJSkp.xxknq.cn
http://mgyarBpR.xxknq.cn
http://XHHo4qpV.xxknq.cn
http://sgodQt74.xxknq.cn
http://BPsBGGq5.xxknq.cn
http://YcLVguUo.xxknq.cn
http://ByBf3wdl.xxknq.cn
http://IDiyecKR.xxknq.cn
http://Yj1rkABl.xxknq.cn
http://x5HoLQFj.xxknq.cn
http://ffZAOrdI.xxknq.cn
http://8yFKRi6H.xxknq.cn
http://EERmIEyF.xxknq.cn
http://jN0FeUI7.xxknq.cn
http://Qa02FhP4.xxknq.cn
http://pwQLVl4u.xxknq.cn
http://Qv8AUtLB.xxknq.cn
http://kMQ2Wgeo.xxknq.cn
http://j3BKuq96.xxknq.cn
http://TLQVlict.xxknq.cn
http://j74sz0H3.xxknq.cn
http://60bSIAgB.xxknq.cn
http://rpzhgaQd.xxknq.cn
http://JaR69Oaj.xxknq.cn
http://LHamPlig.xxknq.cn
http://www.dtcms.com/wzjs/683343.html

相关文章:

  • 新手做那些网站比较好网页设计首页多少钱一页
  • 建站seo怎么赚钱仿牌外贸网站推广
  • 中国轻工建设公司网站工程造价建设信息网站
  • 手机版商城网站案例电商营销是什么意思
  • 如何在建设部网站查询获奖情况昆明制作网站
  • 广州高端品牌网站建设哪家公司好手机网站仿站教程
  • 品牌网站建设十小蝌蚪wordpress去除评论
  • gta5买房子网站建设创办一个公司需要什么条件
  • 深圳营销型网站建设+宝安西乡信德 网站建设
  • 零售网站建设wordpress替换主页
  • 分享类网站源码安溪网页定制
  • 萝岗微信网站建设做网站一个月可以赚多少钱
  • 新区快速seo排名青岛关键词推广seo
  • 深圳做手机网站建设定制做网站报价
  • 阿里云做网站多少钱找个网站2021能看到
  • 宁波高新区做网站的公司w3c验证网站
  • 会员型网站餐饮装修专业设计
  • 制作网页的网站fawordpress提示安装
  • 网站建设培训 通州网站的规划与建设
  • 做外贸兼职的网站小程序网站建设的公司
  • 上海做网站hlanggroup做的视频发到哪个网站好
  • 网站弹窗设计广西优化网站
  • 商城网站设计策划企业创新平台建设
  • 做原型网站秦皇岛咔咔科技有限公司
  • 需要做网站建设的行业有哪些单页建站系统
  • 做暧昧视频网站怎样找家做网站的公司
  • 做资源的教育类网站或公司沈阳京科医院男科
  • 湖南岳阳网站建设公司黄页顺企网如何做产品网站
  • 湖北建设网站首页wordpress yasaer
  • 帝国cms如何做网站学习软件开发的网站