解决Kubernetes的flannel pod出现Init:RunContainerError问题
一:故障背景
我们有个k8s集群,一个master节点和三个Node节点,其中node2的节点ping不通node1节点的pod ip。需要排查一下为什么ping不通pod ip的问题。
二:故障排查
1,三板斧第一斧
一般k8s的网络问题首先从网络组件开始查,本集群用的是flannel网络,在主节点上看看flannel的运行情况
命令:
kubectl get po -o wide -n kube-system
有两个flannel的pod状态不对,处于Init:RunContainerError状态
kube-flannel-ds-amd64-f6dll 1/1 Running 7 105d 192.168.166.12 k8snode3 <none> <none>
kube-flannel-ds-amd64-fswv8 1/1 Running 4 2y158d 192.168.166.10 localhost.localdomain <none> <none>
kube-flannel-ds-amd64-kxzb4 0/1 Init:RunContainerError 0 2y149d 192.168.166.13 k8snode2 <none> <none>
kube-flannel-ds-amd64-lt5wt 0/1 Init:RunContainerError 0 2y149d 192.168.166.14 k8snode1 <none> <none>
2,三板斧第二斧
查看pod的详细信息,详细信息里会有pod状态不对的信息
命令:
kubectl describe po kube-flannel-ds-amd64-kxzb4 -n kube-system
详细信息如下
Events:Type Reason Age From Message---- ------ ---- ---- -------Warning FailedSync 33m (x98321 over 43d) kubelet, k8snode2 (combined from similar events): error determining status: rpc error: code = Unknown desc = Error: No such container: 295d7347cb1ad356ca80e0cf804c76eb4c2f1f43bba761cc0a9c7ad02daa4135Warning FailedCreatePodSandBox 8m49s (x1788389 over 43d) kubelet, k8snode2 Failed create pod sandbox: rpc error: code = Unknown desc = failed to start sandbox container for pod "kube-flannel-ds-amd64-kxzb4": Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "process_linux.go:301: running exec setns process for init caused \"signal: killed\"": unknownNormal SandboxChanged 3m48s (x1857341 over 43d) kubelet, k8snode2 Pod sandbox changed, it will be killed and re-created.
如果一眼能理解或者之前见过类似的错误,就可以根据经验去解决问题,但是如果根据信息还是不知道该如何做,就baidu或者google了
3,三板斧第三斧
经过查询,定位到出现该原因是flannel默认pod分配的内存为50M,但是网络负载比较大时,内存资源是不够的的,导致pod出现问题,状态不对了。那为什么有一个Node状态是对的呢,node3节点是后来加的,负载比较轻,所以50M够用没有出现问题,node1和node2负载比较重50M内存不够用。这就导致了上面出现的情况。
[root@dashboard k8s_bak]# cat kube-flannel.yml |grep memorymemory: "50Mi"memory: "50Mi"memory: "50Mi"memory: "50Mi"memory: "50Mi"memory: "50Mi"memory: "50Mi"memory: "50Mi"memory: "50Mi"memory: "50Mi"
至此问题就查出来,接下来就是如何去解决该问题
三:故障解决
修改kube-flannel.yml文件的memory值,这个可以根据自己的环境情况去增加内存,我这里暂且先配成100M。
部分修改如下
resources:requests:cpu: "100m"memory: "100Mi"limits:cpu: "100m"memory: "100Mi"
需要注意的是所有memory的地方都需要修改成100M,修改后如下
[root@dashboard k8s_bak]# cat kube-flannel.yml | grep memorymemory: "100Mi"memory: "100Mi"memory: "100Mi"memory: "100Mi"memory: "100Mi"memory: "100Mi"memory: "100Mi"memory: "100Mi"memory: "100Mi"memory: "100Mi"
修改完kube-flannel.yml文件,先delete,然后apply
[root@dashboard k8s_bak]# kubectl delete -f kube-flannel.yml
clusterrole.rbac.authorization.k8s.io "flannel" deleted
clusterrolebinding.rbac.authorization.k8s.io "flannel" deleted
serviceaccount "flannel" deleted
configmap "kube-flannel-cfg" deleted
daemonset.extensions "kube-flannel-ds-amd64" deleted
daemonset.extensions "kube-flannel-ds-arm64" deleted
daemonset.extensions "kube-flannel-ds-arm" deleted
daemonset.extensions "kube-flannel-ds-ppc64le" deleted
daemonset.extensions "kube-flannel-ds-s390x" deleted
[root@dashboard k8s_bak]#
[root@dashboard k8s_bak]#
[root@dashboard k8s_bak]# kubectl apply -f kube-flannel.yml
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.extensions/kube-flannel-ds-amd64 created
daemonset.extensions/kube-flannel-ds-arm64 created
daemonset.extensions/kube-flannel-ds-arm created
daemonset.extensions/kube-flannel-ds-ppc64le created
daemonset.extensions/kube-flannel-ds-s390x created
接下来再看看flannel的pod状态,显示正常了
kube-flannel-ds-amd64-lmsmc 1/1 Running 0 6m10s 192.168.166.12 k8snode3 <none> <none>
kube-flannel-ds-amd64-r2rf2 1/1 Running 0 6m10s 192.168.166.13 k8snode2 <none> <none>
kube-flannel-ds-amd64-x82v4 1/1 Running 0 6m10s 192.168.166.10 localhost.localdomain <none> <none>
kube-flannel-ds-amd64-xvv8f 1/1 Running 0 6m10s 192.168.166.14 k8snode1 <none> <none>
再去ping node1节点上的pod,是连通的,至此问题解决
解决Kubernetes的flannel pod出现Init:RunContainerError问题相关推荐
- kubernetes使用flannel网络插件服务状态显示CrashLoopBackOff
使用Kubeadm安装K8s集群,在安装flannel网络插件后,发现pod: kube-flannel-ds 一直是CrashLoopBackOff 报错内容如下: log is DEPRECATE ...
- 一次解决Kubernetes集群内无法访问服务的问题过程
文章目录 一次解决Kubernetes集群内无法访问服务的问题过程 前言 解决过程 先检查要访问的服务是否正常 在busybox中测试 检查kube-dns 检查Calico 参考文档 一次解决Kub ...
- 【Kubernetes系列】Pod
文章目录 概述 使用 Pod 管理 pod 的工作负载资源 Pod 管理多个容器 Pod的使用 Pod 操作系统 Pod 和控制器 Pod 模板 Pod 更新与替换 资源共享和通信 Pod 中的存储 ...
- Jenkins Pipeline Kubernetes 如何创建 Pod
Jenkins Pipeline & Kubernetes 如何创建 pod 文章目录 Jenkins Pipeline & Kubernetes 如何创建 pod 1. 前言 2. ...
- Kubernetes入门:Pod、节点、容器和集群都是什么?
文章来源地址: http://mini.eastday.com/a/180103191329488.html?qid=02263 Kubernetes正迅速成为云计算中部署和管理软件的新标准.不过,K ...
- calico报错Init:0/3或Init:RunContainerError
文章目录 coredns报错状态和原因说明 calico部署报错原因及处理 报错部署说明 报错Init:0/3说明及处理 报错Init:RunContainerError 部署正常显示内容,cored ...
- 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置...
本节书摘来自异步社区<Docker容器:利用Kubernetes.Flannel.Cockpit和Atomic构建和部署>一书中的第2章,第2.2节,作者: [美]Christopher ...
- plsql job执行多个存储过程_在Kubernetes的一个Pod内连续依次执行Container
出于某些目的,有时需要在Kubernetes的一个Pod中,连续依次运行多个Container. 这种有明确结束预期的运行,即Kubernetes的Job. 但是,虽然一个Job可以在一个Pod内运行 ...
- 【kubernetes系列】Pod篇实战操作
目录 一.命令终端 创建Pod 查看Pod 访问Pod中容器 进入Pod内部 删除Pod 配置文件yaml创建 二.Dashboard 创建Pod 创建多容器的Pod 进入容器 访问容器应用 一.命令 ...
最新文章
- Repeater 嵌套
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
- DLL load failed while importing _pywrap_tensorflow_internal
- cadence原理图软件(orcad)层级原理图与位号
- 有了这套模板,女朋友再也不用担心我刷不动 LeetCode 了
- SAP table HRP1000的妙用
- saltstack的安装(转载连接)
- 英文连词_连词我们…讨厌
- php连接数据库navicat,navicat数据库如何连接php
- 2021年兰州师大附中高考成绩查询,西北师范大学附属中学2021年排名
- mysql在线增加字段_MySQL在线加字段实现原理
- lsb_release: command not found 解决
- 易能变频器说明书故障代码_易能变频器报警报故障代码维修技术指导
- 红海竞争下,「社交+」在中东泛娱乐 App 市场的出海新机遇
- CellCtrl控件完美破解研究
- 关于Terra和Aqua的轨道问题整理
- keil5怎么添加stc芯片库
- 可汗学院公开课——统计学学习:47-61
- 数据结构---C++版
- 经验分享:如何快速上手公司的项目代码
热门文章
- 9.7 电机控制程序基础
- 谷歌seo工具有哪些
- 32个企业软件门类名称和释义
- python 一张图画多条线_Python画多条线在一个图里
- KDD 2020(五) | 基于多源异构信息整合的视频标题生成模型(作者带你读论文)...
- 人工智能时代对会计行业的改变与反思
- websocket 服务器外网访问
- 怎么让两个java文件关联,怎么把多个excel文件合并成一个【几个excle合并成一个】...
- BI神器Power Query(23)-- 同一列内多重替换(3)
- BI神器Power Query(18)-- PQ制作时间维度表(7)