欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    Kubernetes 常见故障排查和处理.docx

    • 资源ID:1464687       资源大小:44.13KB        全文页数:29页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Kubernetes 常见故障排查和处理.docx

    排查命令和方式Iskubectlgetpods2、kubectldescribepodsmy-pod3、kubectllogsmy-pod4、kubectlexecmy-pod-it/bin/bash后进入容器排直5、瓷看宿主机日志文件varlogpods*varloqcontainers*1POd故障排查处理1、查看方式:主要通过以下命令枪百kubectlgetpods-nnamespaceca11co-kt>e-conrollers-5df986<M4c-wqv5xcalico-node6cIjbcallco-node-9959xcal1co-no0e-c6<xcalico-no<tenr9hdcoredns-bccdc95cf-hf976core<Js-bccdc95cf-ztBvfkutM>>Api39rv9r-sting-k8s67.9<hcngkube-controlIer-manager-test1ng*k8s67.echengkube-proxy-6jtkbkut>-proxy-jcjplkube-proxy-p9rnlkube-proxy-srwdkub-schdul9r.tsting-k8367.cchcnqkubernetes-da5hboard-Sdc4cS4b55-a8ntbV.一_.G一EAI/1/1/1/1/1/1/1/1/1/1/1/1“/1/IRioiiiiiiiiiiiiiAnJnnnn11nMnnnnnnnnmMnn11nnnnnnnsRRURURUltuRURRURURURURURURURURESTARTS10.10.1;10.9.10.10.9.10.10.9.10.10.9.10.10.10.1;10.10.2410.9.10.10.9.10.10.9.10.10.9.10.10.9.10.10.9.10.10.9.10.10.10.24在上图status列,我们可以看到pod容器的状态2.查看STATUS状态以下是statuslist:Running,Succeeded,Waiting,ContainerCreating,Failed,Pending,Terminating,unknown,Crash1.oopBackOff,ErrImagePuII,ImagePuIIBackOffstatus定义说明:Running:pod运行中(容器内进程重启中也可能是Running状态)Succeeded:Pod成功退出,不再自动启动Waiting:等待ContainerCreating:创建容器中Pll1.不了国外傥像源,或者镜像太大导致PU1.I.超时CNl网络错误,无法间置Pod网络,无法分配IP地址Failed:失败,此POd里至少有一个容器未正常停止Pending:挂起,此POd因为网络或其他原因,如正在PUIlimageunknown:未知,无法获取Pod状态,可能是Xode连接不正常Terminating:POd未正常执行co三and,需要删除Pod重建Crash1.oopBackOffKubernetes正尽力后动Pod,但是个或多个容器已经挂了,或者正被删除.ErrImagcPul1:镜像错误,pull镜像失败ImagePu11BackOff:镜像名称配置错误或者镜像的密钥配置错误如出现异常状态,可看看pod日志内容kubectldescribepod容器名"nnamespace查看State状态3、堂看Conditions状态conditions:TypeStatusInitializedTrueReadyTrueContainersReadyTruePodScheduledTrueTrue表示成功,False表示失败Initializedpod容器初始化完毕Readypod可正常提供服务ContainersReady容器可正常提供服务PodScheduIedpod正在调度中,有合适的节点就会绑定,并更新到etcdUnschedulablepod不能调度,没有找到合适的节点如有False状态显示查看Events信息Events:TypeReasonAgewarningunhealthy4mis(x3O2812over35d)*c6c-c,Cg-g-1.T4-Jcd.T¾PQCCReason显示UnheaIthy异常,仔细肯看后面的报错信息,有针对性修复4、EVentS报错信息整理如下:(1)Failedtopullimage"×xx":Error:imagexxxnotfound原因:提示拉取镜像失败,找不到镜像找到可以访问的镜像地址以及正确的tag,并修改镜像仓库未login,需要IoginK8s没有pull镜像的权限,需要开通权限再pull(2)WarningFaiIedSyncErrorsyncingpod,skipping:failedtowithRunContainerError:'GenerateRunContainerOptions:XXXnotfound,原因:此podXXX的name在namespace下找不到,解决方式:需要重启pod解决,kubectlreplace-force-fpod.yamlWarningFaiIedSyncErrorsyncingpod,skipping:failedto"StartContainer-for"XXX*withRunContainerError:"GenerateRunContainerOptions:configmaps×XX*notfound"原因:NameSPaCe下找不到XXX命名的COnfigM叩,解决方式:*新新建ConfigMapkubectlcreate-fConfigmaP.yaml(4)WarningFaiIedMountMountVoIume.SetUpfailedforvolume*kubernetes.iosecret*(spec.Name:'XXXsecref)podwith:secrets“XXXsecret"notfound原因:缺失Secret解决方式:需要新建Secretkubectlcreatesecretdocker-registrysecret名-docker-server=仓库url-docker-username=×××-docker-password=×××-nnamespace以下内容,如修改yaml文件后,执行kubectlapply-fpod.yaml奥启pod才生效(5)NormalKillingKillingcontainerwithdockeridXXX:pod"XXX'container,XXX,isunhealthy,itwillbekilledandre-created.容器的活跃度探测失败,Kubernetes正在k川问题容器原因:探测不正确,health检直的UR1.不正确,或者应用未响应修改yaml文件内health检查的periodSeconds等数值,调大- ZbinZsh- -C- touchtaphealthy;sleep3;11三-rftmphealthy;sleep6IivenessProbe:exec:COMand:-cat-t三phealthyInitidlDeldvSeconds:lperiodSeconds:5(6)WarningFaiIedCreateErrorcreating:pods"XXXX,isforbidden:maximummemoryusageperPodisXXX1butrequestisXXX1maximummemoryusageperContainerisXXX,butrequestisXXX.原因:K8s内存限制配额小于pod使用的大小,导致报错解决方式:调大k8s内存配额,或者减小pod的内存大小解决containers:-name:constramts-mem-image:nginxresources:limits:requests:memory:"SOOMi"'pod(XXX)failedtofitinanynodefitfailureonnode(XXX):InsufficientcpuEvents:FlrstSeen1.astSeenCountFroeSubObjectPathTypeReason3n3n1default-scheduler)MamingFAlledSchedulingPOfit*lluronnod.g1.':jSMHHa*ntfitfailureonnode.:InsufficientcpufitonnodeInsuHicientcpu原因:node没有足够的CPU供调用,解决方式:需要减少POd内CPU的使用数量,yaml内修改spec:limits:-max:ICPiK-2memory:IGi(8)FaiIedMountUnabletomountvolumesforpod,XXX':timeoutexpiredwaitingforvolumestoattach/mountforpod,XXX*fai.listofunattached/unmountedVoIumes=XXXFaiIedSyncErrorsyncingpod,skipping:timeoutexpiredwaitingforvolumestoattach/mountforpod"XXXVfai.listofUnattaChed/unmountedvolumes=X×X原因:podXXX挂载卷失败解决方式:需要直看下是否建了卷,volumemontPath目录是否正确用yaml文件建VolUme并mountspec:conaners:一xage:nginx:1.12na三e:zest-containerv0IureM0un3:-nountPat:Zda;anare:test-voluaevolunes:-nane:est-volumehostrath:pa:etcdefaulrtype:Directory(9)FaiIedMountFailedtoattachvolume"XXX,onnode,XXX'with:GCEpersistentdisknotfound:diskName="XX×disk"zone=""解决方式:检音persistentdisk是否正确创建Yaml文件创建persistent方式如下apiVersion:vlZind:PersistenxVolizEemetadata:name:task-pv-volumelabels:type:localspec:(10)error:errorvalidating"XXX.yam:errorvalidatingdata:foundinvalidfieldresourcesforPodSpec;ifyouchoosetoignoretheseerrors,turnvalidationoffwithvalidate=false原因:yaml文件错误,一股是多了或者少了空格导致.解决方式:需要校验yaml是否正确可使用kubeval工具校验yaml(11)容器镜像不史新解决方式:deployment中指定强制更新策略ImagePullPolicy:Always(combinedfromsimilarevents):Readinessprobefailed:calico/nodeisnotready:BIRDisnotready:BGPnotestablishedwith:Numberofnode(三)withBGPpeeringestablished=0原因:指定node节点calico网络不通,解决方式:检查calico相关镜像是否pull成功,calico-node容器是否正常启动。如镜像和容器正常,需要reset正黄该节点k8s,正新加入集群kubeadmresetkubeadmjoinip:6443-tokenXXXXX.XX×XXXXXX-discovery-token-ca-cert-hashsha256:XXXXXXXXXXXXXXXXXXX(13)RunPodSandboxfromruntimeservicefailed:rpcerror:code=Unknowndesc=failedpullingimage,gcr.io/google_containers/pause-amd64:*:Gethttps:/gcr.io/vl/_ping:dialtcp:443:i/otimeout原因:gcr.io被GFW墙了找阿里或googecontainer其他可用的镜像Dockertag到gcr.io/google_COntainerSpause-amd64(14)WarningFailedCreatePodSandBox3m(×13over3m)kubelet,Failedcreatepodsandbox执行j。UrnalCtl-xegrepcni发现failedtofindplugin"loopback-inpathoptloopbackbinusrlocalbin解决方式:需要在usrlocalbin内复制loopback以下是node节点问题排直2node节点故障排查处理kubectlgetnode-nnamespace查看Node节点状态,STATUSReady表示正常,NotReady不正常NAME-STATUSRO1.ESAGEVERSIONtesting-k8*Ready<none>98dVl.15.3testing-k8Ready<none>98dvl.15.3testing-k8Readymaster98dvl.15.3esting-kdiReady<none>98dvl.15.3注意version必须保持一致如有NotReady问题,需要至启节点kubectl,或者亚启docker如不能解决,需要reset节点后,k8s至新join该node查看node日志执行kubectldescribenodenode名-nnamespace如有"nodeip"notfound检查nodeip是否能Ping通,nodeip或者ViP宕机引起以下是整理的node报错信息及处理:报错信息整理如下:1、Theconnectiontotheserverlocalhost:8080wasrefused-didyouspecifytherighthostorport?执行kubectlgetXXX报错kubectlgetnodes原因:node缺少admin.conf解决方式:复制master上的admin.Conf到nodeNode节点执行echo-exportKUBECONFIG=etckubernetesadmin.conf*>>/.bash_profile2、kubernetesnodePort不可访问原因:一般是iptables或SeIinUX引起解决方式:关闭,清空Setenforce0iptables-flushiptables-tnat-flushservicedockerrestartiptables-PFORWARDACCEPT重启docker3、Failedtostartinotify_add_watchsysfscgroupblkio:nospaceleftondevice或Failedtostartinotify_add_watchsysfscgroucu,cpuacct:nospaceleftondevice原因:空间或系统参数原因解决方式:查看磁盘空间有无100%执行cat/proc/sys/fs/inotify/max_user_watches/调大数值sysctlfs.inotify.max_USejWatCheS=10485764、Failedtostartreboot.target:Connectiontimedout未知原因:田启报超时解决方式:执行Systemctlforce-forcereboot5、SystemOOMencountered原因:使用内存超限后,容器可能会被KUberneteS进行。OMKilIed解决方式:需要调整内存,合理分配Unabletoregisternode""withAPIserver:Posthttps:/localhost:6443/api/vl/nodes:dialtcp127.0.0.1:6443:getsockopt:connectionrefused原因:node无法连接或拒绝连接master解决方式:Node节点更启kubelet,如未恢豆,需要查看node服务器上CPU内存,硬盘等资源情况7、pod状态一百TerminatingContainerGCFaiIedrpcerror:code=DeadIineExceededdesc=contextdeadlineexceeded原因:可能是17版本dockerd的BUG解决方式:Systemctldaemon-ree×ecSystemctlrestartdocker如不能恢复需要升级d。Cker到18版本Containerruntimeisdown,P1.EGisnothealthy:plegwaslastseenactiveIOmago;thresholdis3m0s原因:Pod1.ifecycleEventGeneratorPod生命周期事件生成器超时响应RPC调用过程中容器运行时响应超时或者节点上的Pod数量太多,导致relist无法在3分钟内完成解决方式:Systemctldaemon-reloadSystemctldaemon-ree×ecSystemctlrestartdocker重启Node节点服务器如果以上都不能解决升级d。Cker版本到最新如果还不能解决升级Icubernetes到1.16以上版本9、Novalidprivatekeyand/orcertificatefound,reusingexistingprivatekeyorcreatinganewone原因:node节点kubelet启动后,会向master申请CSr证书,找不到证书解决方式:需要在master上同意证书申请10、failedtorunKubelet:Runningwithswaponisnotsupported,pleasedisableswap!orset-fail-swap-onflagtofalse,procswapscontaine原因:启用了swap解决方式:卸载swap分区后,承启kubeletsystemctlrestartkubelet11、Thenodewaslowonresource:DiskPressure登录node节点查看,磁盘空间状况DiskusageonimageNesystemtsat85%whichisoverthehighthreshold(85%),Tryngtofree287558041b/tesdovntothetowtresho4d(80%).原因:node的kubelet负责顶起采集资源占用数据,并和预先设署的threshold值进行比较,如果超过threshold值,kubelet会杀掉一些Pod来回收相关资源解决方式:修改usrlibsystemdsystemkubelet.service.d10-kubeadm.confEnvironment="KUBE1.ET-KUBECONFIG-ARGS=-bootstrap-kubecon-fig=/etckubernetesbootstrap-kubelet.conf-kubeconfig=etckuberneteskubelet.conf*配置参数-eviction-hard=nodefs.available<5%,后续清理磁盘重启kubelet12、Node节点状态unknown查看进程,报-bash:fork:Cannotallocatememory错误查看内存是否还有free查看procsyskernelPiC1.maX是否过小解决方式:增加内存,或者调大procsyskernelPid_maxprovidedportisnotinthevalidrange.Therangeofvalidportsis30000-32767原因:超出nodeport端口范围,默认nodeport需要在30000-32767范围内解决方式:修改etckubernetesmanifestskube-apiserver.yaml修改service-node-port-range=数字函启apiserver14、1node(三)hadtaintsthatthepoddidn'ttolerate原因:该节点不可调度,默认master不可调度解决方式:kubectldescribenodes查看状态kubectltaintnodesnodekey:NoSchedule-删除node节点不可调度3master故障排查处理报错信息整理如下:1、 unabletofetchthekbeadm-configConfigMap:failedtogetconfigmap:Unauthorized原因:token已经过期了,token默认是24小时内有效果的解决方式:在master节点击新生成token,亚新join节点kubeadmtokencreateopenssl×509-pubkey-inetckubernetespkica.crtopensslrsa-pubin-outformder2>devnullopenssldgst-sha256-hexsed's.*/'2、Unabletoconnecttotheserver:x509:certificatesignedbyunknownauthority(possiblybecauseof,cryptorsa:verificationerror'whiletryingtoverifycandidateauthoritycertificate,kubernetes,)原因:权限认证报错,需要根据提示操作解决方式:参考控制台提示mkdir-pSHOME/.kubesudocp-ietckubernetesadmin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)SHOME/.kube/config3、Unabletoupdatecniconfig:NonetworksfoundinetccninetContainerruntimenetworknotready:NetworkReady=falsereason:NetwOrkPlUginNOtReadymessage原因:网络CNl找不到解决方式:sysctlnet.bridge.bridge-nf-call-itables=l安装flannel或者calico网络4、coredns一直处于Pending或者ContainerCreating状态原因:网络问题引起解决方式:安装flannel或者calico网络pluginflanneldoesnotsupportconfigversion修改etccninet.d10-fIanne1.confIist查看CniVersion版本号是否一致,不一致的话,修改成一致,或者k8s当前可支持的版本5、WARNINGIsDockerSystemdCheckWARNINGIsDockerSystemdCheck:detected-cgroupfs"astheDockercgroupdriver.Therecommendeddriveris'systemd'.Pleasefollowtheguideathttps:/kubernetes.io/docs/setup/cri/原因:缺少配置driversystemd解决方式:修改或创建etcdockerdaemon.json,增力口:*exec-opts*:Cnativexgroupdriver=systemd"束启docker6、WARNINGFiIeExiSting-SOcatWARNINGFiIeExiSting-Socat:socatnotfoundinsystempath原因:找不到SOCat解决方式:yuminstallsocat7、Permissiondeniedcannotcreatevarlogflentd.log:Permissiondenied原因:权限拒绝解决方式:关棹SElinUX安全导致.三etcselinu×config中将SE1.INU×=enforcing设置成disabled如未解决,给与目录写权限8、启动apiserver失败,每次启动都是报k8s-masters>,stemdFailedtostartKubemetesAPIServerK8s-mastersystemdUnitKUbe-apiserverserviceenteredfailedstateks-mastersystemdkube-apiserver.servicefailed.k8s-mastersystemdkube-apiserverservicehoWofftimeover,schedulingrestartk8s-mastersystemdstartrequestrepeatedtooquklyforkube-aptserverserveks-mastersystemdFailedtostartKuoemetesAPIServer.解决方式:需要配置ServiceAccountYaml创建apiVersion:vlkind:ServiceAccountmetadata:name:admin-usernamespace:kube-system9、repositorydoesnotexistormayrequire'dockerlogin':denied:requestedaccesstotheresourceisdenied原因:node节点没有权限从harbor拉取偏像解决方式:需要在master节点进行授权kubectlcreatesecret10、etcd启动失败etcd:raftsavestateandentrieserror:openvarlibetcddefault.etcdmemberwal××x.tmp:isadirectoryk8s-xaseretcd:raftsavestaeandentrieserror:openfault.etcd11berwftlO.txp:idadirectoryk8s-xasersysexd:etcd.service:xainprocessexited/code=exltedrk8s-113tersystesd:FailedtostortEtcdServer.k83-rtasersystexd:Unitetcd.serviceenteredfailedsate.k8s-xasersyszexd:ecd.servicefailed.k8s-xa3ter3y9exd:etcd.serviceholdofftimeover,schedulingrestert.原因:etcdmember目录文件报错解决方式:删除相关tmp文件和目录,更启etcd服务11、etcd节点故障执行etcdctlcluster-health,显示有节点unhealthy原因:node节点etcd故障了解决方式:登录问题nodeSystemctlstopetcdSystemctlrestartetcd如果还是不正常需要删除数据rm-rfvarlibetcddefault.etcdmember*(记得先备份)再电启etcd为避免出现一些不必要的问鹿,运维和开发人员应该有规范的去使用K8s集群,最大限度的去避免因为涉及和使用不当而引起的故隍,参考以下:Kubernetes使用规范1、K8snode节点直接实现了高可用方式,用户只需要考虑master的高可用企业建议使用双master或多master的架构,避免master单点故障2、K8s集群的所有节点,ntp时间一定要校准同步3、建议使用OVS或calico网络,不建议使用flannelf4、建议使用较新的稳定版本,bug较少至少1.12以上,提供ipvs模型,非仅ipatbles,性能决定5、要有命名规范NarneSpace,master,noderpod,service,ingress都要用相应的命名规范,避免混乱6、使用deployment优先,不使用RC.支持版本回滚等功能,pod使用多副本,replication配芭复数使用滚动升级发布7、尽量通过yaml文件,或者dashboard去管理k8s.不要长期直接跑命令8、通过yaml文件,去限制pod的cpu,内存,空间等资源9、pod内的端口尽量不要直接暴露在node,应通过service去调取10、云上使用IoadbalanCe做SerViCe负载均衡自建k8s可以引入ingress11、K8s容器一定要监控建议通过kube-prometheus监控12、建议部署agent日志服务,nodeagent统一收集日志,不要用原生k8sIog,最好是使用微服务sidecar

    注意事项

    本文(Kubernetes 常见故障排查和处理.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开