Kubernetes 常见故障排查和处理_第1页
Kubernetes 常见故障排查和处理_第2页
Kubernetes 常见故障排查和处理_第3页
Kubernetes 常见故障排查和处理_第4页
Kubernetes 常见故障排查和处理_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

排查命令和方式1、kubectlgetpods2、kubectldescribepodsmy-pod3、kubectllogsmy-pod4、kubectlexecmy-pod-it/bin/bash后进入容器排查5、查看宿主机日志文件/var/log/pods/*/var/log/containers/*1pod故障排查处理1、查看方式:主要通过以下命令检查kubectlgetpods-nnamespace在上图status列,我们可以看到pod容器的状态2、查看STATUS状态以下是statuslist:Running,Succeeded,Waiting,ContainerCreating,Failed,Pending,Terminating,unknown,CrashLoopBackOff,ErrImagePull,ImagePullBackOffstatus定义说明:如出现异常状态,可查看pod日志内容kubectldescribepod容器名-nnamespace查看State状态3、查看Conditions状态True表示成功,False表示失败Initializedpod容器初始化完毕Readypod可正常提供服务ContainersReady容器可正常提供服务PodScheduledpod正在调度中,有合适的节点就会绑定,并更新到etcdUnschedulablepod不能调度,没有找到合适的节点如有False状态显示查看Events信息Reason显示Unhealthy异常,仔细查看后面的报错信息,有针对性修复4、Events报错信息整理如下:(1)Failedtopullimage"xxx":Error:imagexxxnotfound原因:提示拉取镜像失败,找不到镜像解决方式:找到可以访问的镜像地址以及正确的tag,并修改镜像仓库未login,需要loginK8s没有pull镜像的权限,需要开通权限再pull(2)WarningFailedSyncErrorsyncingpod,skipping:failedtowithRunContainerError:"GenerateRun

ContainerOptions:XXXnotfound"原因:此podXXX的name在namespace下找不到,解决方式:需要重启pod解决,kubectlreplace--force-fpod.yaml(3)WarningFailedSyncErrorsyncingpod,skipping:failedto"StartContainer"for"XXX"withRunContainerError:"GenerateRunContainerOptions:configmaps\"XXX\"notfound"原因:Namespace下找不到XXX命名的ConfigMap,解决方式:重新新建ConfigMapkubectlcreate-fconfigmap.yaml(4)WarningFailedMountMountVolume.SetUpfailedforvolume"kubernetes.io/secret/"(spec.Name:"XXXsecret")podwith:secrets"XXXsecret"notfound原因:缺失Secret解决方式:需要新建Secretkubectlcreatesecretdocker-registrysecret名--docker-server=仓库url--docker-username=xxx--docker-password=xxx-nnamespace以下内容,如修改yaml文件后,执行kubectlapply-fpod.yaml重启pod才生效(5)NormalKillingKillingcontainerwithdockeridXXX:pod"XXX"container"XXX"isunhealthy,itwillbekilledandre-created.容器的活跃度探测失败,Kubernetes正在kill问题容器原因:探测不正确,health检查的URL不正确,或者应用未响应解决方式:修改yaml文件内health检查的periodSeconds等数值,调大(6)WarningFailedCreateErrorcreating:pods"XXXX"isforbidden:[maximummemoryusageperPodisXXX,butrequestisXXX,maximummemoryusageperContainerisXXX,butrequestisXXX.]原因:K8s内存限制配额小于pod使用的大小,导致报错解决方式:调大k8s内存配额,或者减小pod的内存大小解决(7)pod(XXX)failedtofitinanynodefitfailureonnode(XXX):Insufficientcpu原因:node没有足够的CPU供调用,解决方式:需要减少pod内cpu的使用数量,yaml内修改(8)FailedMountUnabletomountvolumesforpod"XXX":timeoutexpiredwaitingforvolumestoattach/mountforpod"XXX"/"fail".listofunattached/unmountedvolumes=XXXFailedSyncErrorsyncingpod,skipping:timeoutexpiredwaitingforvolumestoattach/mountforpod"XXX"/"fail".listofunattached/unmountedvolumes=XXX原因:podXXX挂载卷失败解决方式:需要查看下是否建了卷,volumemountPath目录是否正确用yaml文件建volume并mount(9)FailedMountFailedtoattachvolume"XXX"onnode"XXX"with:GCEpersistentdisknotfound:diskName="XXXdisk"zone=""解决方式:检查persistentdisk是否正确创建Yaml文件创建persistent方式如下(10)error:errorvalidating"XXX.yaml":errorvalidatingdata:foundinvalidfieldresourcesforPodSpec;ifyouchoosetoignoretheseerrors,turnvalidationoffwith--validate=false原因:yaml文件错误,一般是多了或者少了空格导致。解决方式:需要校验yaml是否正确可使用kubeval工具校验yaml(11)容器镜像不更新解决方式:deployment中指定强制更新策略ImagePullPolicy:Always(12)(combinedfromsimilarevents):Readinessprobefailed:calico/nodeisnotready:BIRDisnotready:BGPnotestablishedwith:Numberofnode(s)withBGPpeeringestablished=0原因:指定node节点calico网络不通,解决方式:检查calico相关镜像是否pull成功,calico-node容器是否正常启动。如镜像和容器正常,需要reset重置该节点k8s,重新加入集群kubeadmresetkubeadmjoinip:6443--tokenXXXXX.XXXXXXXXX--discovery-token-ca-cert-hashsha256:XXXXXXXXXXXXXXXXXXX(13)RunPodSandboxfromruntimeservicefailed:rpcerror:code=Unknowndesc=failedpullingimage"gcr.io/google_containers/pause-amd64:":Gethttps://gcr.io/v1/_ping:dialtcp:443:i/otimeout原因:gcr.io被GFW墙了解决方式:找阿里或googlecontainer其他可用的镜像Dockertag到gcr.io/google_containers/pause-amd64(14)WarningFailedCreatePodSandBox3m(x13over3m)kubelet,Failedcreatepodsandbox执行journalctl-xe|grepcni发现failedtofindplugin“loopback”inpath[/opt/loopback/bin/usr/local/bin]解决方式:需要在/usr/local/bin内复制loopback以下是node节点问题排查2node节点故障排查处理kubectlgetnode-nnamespace查看Node节点状态,STATUSReady表示正常,NotReady不正常注意version必须保持一致如有NotReady问题,需要重启节点kubectl,或者重启docker如不能解决,需要reset节点后,k8s重新join该node查看node日志执行kubectldescribenodenode名-nnamespace如有“nodeip”notfound检查nodeip是否能ping通,nodeip或者vip宕机引起以下是整理的node报错信息及处理:报错信息整理如下:1、Theconnectiontotheserverlocalhost:8080wasrefused-didyou

specifytherighthostorport?执行kubectlgetXXX报错kubectlgetnodes原因:node缺少admin.conf解决方式:复制master上的admin.conf到nodeNode节点执行echo"exportKUBECONFIG=/etc/kubernetes/admin.conf">>~/.bash_profile2、kubernetesnodePort不可访问原因:一般是iptables或selinux引起解决方式:关闭,清空setenforce0iptables--flushiptables-tnat--flushservicedockerrestartiptables-PFORWARDACCEPT重启docker3、Failedtostartinotify_add_watch/sys/fs/cgroup/blkio:nospaceleftondevice或Failedtostartinotify_add_watch/sys/fs/cgroup/cpu,cpuacct:nospaceleftondevice原因:空间或系统参数原因解决方式:查看磁盘空间有无100%执行cat/proc/sys/fs/inotify/max_user_watches/调大数值sysctlfs.inotify.max_user_watches=10485764、Failedtostartreboot.target:Connectiontimedout未知原因:重启报超时解决方式:执行systemctl--force--forcereboot5、SystemOOMencountered原因:使用内存超限后,容器可能会被Kubernetes进行OOMKilled解决方式:需要调整内存,合理分配6、Unabletoregisternode""withAPIserver:Posthttps://localhost:6443/api/v1/nodes:dialtcp:6443:getsockopt:connectionrefused原因:node无法连接或拒绝连接master解决方式:Node节点重启kubelet,如未恢复,需要查看node服务器上cpu内存,硬盘等资源情况7、pod状态一直TerminatingContainerGCFailedrpcerror:code=DeadlineExceededdesc=context

deadlineexceeded原因:可能是17版本dockerd的BUG解决方式:systemctldaemon-reexecsystemctlrestartdocker如不能恢复需要升级docker到18版本8、Containerruntimeisdown,PLEGisnothealthy:plegwaslastseen

active10mago;thresholdis3m0s原因:PodLifecycleEventGeneratorPod生命周期事件生成器超时响应RPC调用过程中容器运行时响应超时或者节点上的Pod数量太多,导致relist无法在3分钟内完成解决方式:systemctldaemon-reloadsystemctldaemon-reexecsystemctlrestartdocker重启Node节点服务器如果以上都不能解决升级docker版本到最新如果还不能解决升级kubernetes到1.16以上版本9、Novalidprivatekeyand/orcertificatefound,reusingexisting

privatekeyorcreatinganewone原因:node节点kubelet启动后,会向master申请csr证书,找不到证书解决方式:需要在master上同意证书申请10、failedtorunKubelet:Runningwithswaponisnotsupported,please

disableswap!orset--fail-swap-onflagtofalse./proc/swapscontaine原因:启用了swap解决方式:卸载swap分区后,重启kubeletsystemctlrestartkubelet11、Thenodewaslowonresource:[DiskPressure]登录node节点查看,磁盘空间状况原因:node的kubelet负责顶起采集资源占用数据,并和预先设置的threshold值进行比较,如果超过threshold值,kubelet会杀掉一些Pod来回收相关资源解决方式:修改/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.confEnvironment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubecon-fig=/etc/kubernetes/bootstrap-kubelet.conf--kubeconfig=/etc/kubernetes/kubelet.conf"配置参数--eviction-hard=nodefs.available<5%,后续清理磁盘重启kubelet12、Node节点状态unknown查看进程,报-bash:fork:Cannotallocatememory错误查看内存是否还有free查看/proc/sys/kernel/pid_max是否过小解决方式:增加内存,或者调大/proc/sys/kernel/pid_max13、providedportisnotinthevalidrange.Therangeofvalidports

is30000-32767原因:超出nodeport端口范围,默认nodeport需要在30000-32767范围内解决方式:修改/etc/kubernetes/manifests/kube-apiserver.yaml修改--service-node-port-range=数字重启apiserver14、1node(s)hadtaintsthatthepoddidn'ttolerate原因:该节点不可调度,默认master不可调度解决方式:kubectldescribenodes查看状态kubectltaintnodesnodekey:NoSchedule-删除node节点不可调度3master故障排查处理报错信息整理如下:1、unabletofetchthekubeadm-configConfigMap:failedtogetconfigmap:Unauthorized原因:token已经过期了,token默认是24小时内有效果的解决方式:在master节点重新生成token,重新join节点kubeadmtokencreateopensslx509-pubkey-in/etc/kubernetes/pki/ca.crt|opensslrsa–pubin-outformder2>/dev/null|openssldgst-sha256-hex|sed's/^.*//'2、Unabletoconnecttotheserver:x509:certificatesignedbyunknown

authority(possiblybecauseof"crypto/rsa:verificationerror"while

tryingtoverifycandidateauthoritycertificate"kubernetes")原因:权限认证报错,需要根据提示操作解决方式:参考控制台提示mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config3、Unabletoupdatecniconfig:Nonetworksfoundin/etc/cni/netContainerruntimenetworknotready:NetworkReady=false

reason:NetworkPluginNotReadymessage原因:网络CNI找不到解决方式:sysctlnet.bridge.bridge-nf-call-iptables=1安装flannel或者calico网络4、coredns一直处于Pending或者ContainerCreating状态原因:网络问题引起解决方式:安装flannel或者calico网络pluginflanneldoesnotsupportconfigversion修改/etc/cni/net.d/10-flannel.conflist查看cniVersion版本号是否一致,不一致的话,修改成一致,或者k8s当前可支持的版本5、WARNINGIsDockerSystemdCheck[WARNINGIsDockerSystemdCheck]:detected"cgroupfs"astheDockercgroupdriver.Therecommendeddriveris"systemd".Pleasefollowtheguideathttps://kubernetes.io/docs/setup/cri/原因:缺少配置driversystemd解决方式:修改或创建/etc/docker/daemon.json,增加:"exec-opts":["native.cgroupdriver=systemd"]重启docker6、WARNINGFileExisting-socat[WARNINGFileExisting-socat]:socatnotfoundinsystempath原因:找不到socat解决方式:yuminstallsocat7、Permissiondeniedcannotcreate/var/log/fluentd.log:Permissiondenied原因:权限拒绝解决方式:关掉SElinux安全导致.在/etc/selinux/config中将SELINUX=enforcing设置成disabled如未解决,给与目录写权限8、启动apiserver失败,每次启动都是报解决方式:需要配置ServiceAccountYaml创建9、repositorydoesnotexistormayrequire'dockerlogin':denied:requestedaccesstotheresourceisdenied原因:node节点没有权限从harbor拉取镜像解决方式:需要在mast

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论