一:故障背景

我们有个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问题相关推荐

  1. kubernetes使用flannel网络插件服务状态显示CrashLoopBackOff

    使用Kubeadm安装K8s集群,在安装flannel网络插件后,发现pod: kube-flannel-ds 一直是CrashLoopBackOff 报错内容如下: log is DEPRECATE ...

  2. 一次解决Kubernetes集群内无法访问服务的问题过程

    文章目录 一次解决Kubernetes集群内无法访问服务的问题过程 前言 解决过程 先检查要访问的服务是否正常 在busybox中测试 检查kube-dns 检查Calico 参考文档 一次解决Kub ...

  3. 【Kubernetes系列】Pod

    文章目录 概述 使用 Pod 管理 pod 的工作负载资源 Pod 管理多个容器 Pod的使用 Pod 操作系统 Pod 和控制器 Pod 模板 Pod 更新与替换 资源共享和通信 Pod 中的存储 ...

  4. Jenkins Pipeline Kubernetes 如何创建 Pod

    Jenkins Pipeline & Kubernetes 如何创建 pod 文章目录 Jenkins Pipeline & Kubernetes 如何创建 pod 1. 前言 2. ...

  5. Kubernetes入门:Pod、节点、容器和集群都是什么?

    文章来源地址: http://mini.eastday.com/a/180103191329488.html?qid=02263 Kubernetes正迅速成为云计算中部署和管理软件的新标准.不过,K ...

  6. calico报错Init:0/3或Init:RunContainerError

    文章目录 coredns报错状态和原因说明 calico部署报错原因及处理 报错部署说明 报错Init:0/3说明及处理 报错Init:RunContainerError 部署正常显示内容,cored ...

  7. 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置...

    本节书摘来自异步社区<Docker容器:利用Kubernetes.Flannel.Cockpit和Atomic构建和部署>一书中的第2章,第2.2节,作者: [美]Christopher ...

  8. plsql job执行多个存储过程_在Kubernetes的一个Pod内连续依次执行Container

    出于某些目的,有时需要在Kubernetes的一个Pod中,连续依次运行多个Container. 这种有明确结束预期的运行,即Kubernetes的Job. 但是,虽然一个Job可以在一个Pod内运行 ...

  9. 【kubernetes系列】Pod篇实战操作

    目录 一.命令终端 创建Pod 查看Pod 访问Pod中容器 进入Pod内部 删除Pod 配置文件yaml创建 二.Dashboard 创建Pod 创建多容器的Pod 进入容器 访问容器应用 一.命令 ...

最新文章

  1. Repeater 嵌套
  2. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
  3. DLL load failed while importing _pywrap_tensorflow_internal
  4. cadence原理图软件(orcad)层级原理图与位号
  5. 有了这套模板,女朋友再也不用担心我刷不动 LeetCode 了
  6. SAP table HRP1000的妙用
  7. saltstack的安装(转载连接)
  8. 英文连词_连词我们…讨厌
  9. php连接数据库navicat,navicat数据库如何连接php
  10. 2021年兰州师大附中高考成绩查询,西北师范大学附属中学2021年排名
  11. mysql在线增加字段_MySQL在线加字段实现原理
  12. lsb_release: command not found 解决
  13. 易能变频器说明书故障代码_易能变频器报警报故障代码维修技术指导
  14. 红海竞争下,「社交+」在中东泛娱乐 App 市场的出海新机遇
  15. CellCtrl控件完美破解研究
  16. 关于Terra和Aqua的轨道问题整理
  17. keil5怎么添加stc芯片库
  18. 可汗学院公开课——统计学学习:47-61
  19. 数据结构---C++版
  20. 经验分享:如何快速上手公司的项目代码

热门文章

  1. 9.7 电机控制程序基础
  2. 谷歌seo工具有哪些
  3. 32个企业软件门类名称和释义
  4. python 一张图画多条线_Python画多条线在一个图里
  5. KDD 2020(五) | 基于多源异构信息整合的视频标题生成模型(作者带你读论文)...
  6. 人工智能时代对会计行业的改变与反思
  7. websocket 服务器外网访问
  8. 怎么让两个java文件关联,怎么把多个excel文件合并成一个【几个excle合并成一个】...
  9. BI神器Power Query(23)-- 同一列内多重替换(3)
  10. BI神器Power Query(18)-- PQ制作时间维度表(7)