【解决】k8s使用flannel网络插件的问题整理

server/2024/12/14 18:57:07/

问题1: 拉取镜像失败ImagePullBackOff

问题排查

1、查看所有pod的状态

kubectl get pods --all-namespaces

在这里插入图片描述
kube-flannel的两个pod状态为ImagePullBackOff,由于镜像拉取异常导致

2、查看pod启动日志,获取更详细的信息

kubectl logs -n 命名空间namespace 容器名称pod-name

 kubectl logs -n kube-flannel kube-flannel-ds-4rf8k -c kube-flannel

在这里插入图片描述
报错Failed to check br netfilter: stat /proc/sys/net/bridge/bridge-nf-call-iptables: no such file or directory

错误通常表示内核模块 br_netfilter 未加载或未正确配置。br_netfilter 模块用于在桥接网络中启用 iptables 规则,这是 Kubernetes 网络插件Flannel 正常工作的必要条件

github文档-README.md

Flannel 需要 br_netfilter 模块才能启动,从 1.30 版本开始,kubeadm 不再检查该模块是否已安装,如果缺少该模块,Flannel 将无法正确启动。

在这里插入图片描述

解决

加载 br_netfilter 模块

sudo modprobe br_netfilter

编辑 /etc/modules-load.d/br_netfilter.conf 文件,确保在系统启动时加载 br_netfilter 模块:

echo "br_netfilter" | sudo tee /etc/modules-load.d/br_netfilter.conf

配置以启用桥接网络的 iptables 规则

cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1 # 开启路由转发
net.bridge.bridge-nf-call-ip6tables = 1 # 开启桥流量监控
net.bridge.bridge-nf-call-iptables = 1 # 开启桥流量监控
EOF

生效

sudo sysctl --system  

重启kubelet和containerd

systemctl daemon-reload
systemctl restart kubelet
systemctl restart containerd

问题2: pod启动失败CrashLoopBackOff

问题排查

1、 查看pod状态

kubectl get pods -n kube-flannel

在这里插入图片描述
2、查看日志输出

kubectl logs -n kube-flannel  kube-flannel-ds-4hlrk

在这里插入图片描述

报错Error registering network: failed to acquire lease: node "xxx" pod cidr not assigned

大概意思就是:flannel网络插件在尝试为节点注册网络时,Kubernetes无法为其分配一个Pod CIDR(Pod网络的IP地址范围)。这通常是由于集群的网络配置没有正确地设置CIDR范围。

官方文档中明确指出,必须在kubeadm init的时候设置 --pod-network-cidr=10.244.0.0/16

github文档-kubernetes.md
在这里插入图片描述

解决

1、在networking中增加podSubnet: 10.244.0.0/16配置

kubectl edit cm kubeadm-config -n kube-system

在这里插入图片描述
2、修改 controller-manager 静态 pod 的启动参数,在command中增加 --allocate-node-cidrs=true--cluster-cidr=10.244.0.0/16

vi /etc/kubernetes/manifests/kube-controller-manager.yaml
- --allocate-node-cidrs=true
- --cluster-cidr=10.244.0.0/16

在这里插入图片描述
检查配置生效

kubectl cluster-info dump | grep -m 1 cluster-cidr

在这里插入图片描述
重启kubelet、containerd

systemctl daemon-reload
systemctl restart kubelet
systemctl restart containerd

稍等一会,重新查看pod状态

kubectl get pods -A

在这里插入图片描述


http://www.ppmy.cn/server/150160.html

相关文章

以ATTCK为例构建网络安全知识图

ATT&CK&#xff08;Adversarial Tactics, Techniques, and Common Knowledge &#xff09;是一个攻击行为知识库和模型&#xff0c;主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。本文简单介绍ATT&CK相关的背景概念&#xff0c;并探讨通过ATT&a…

Qt之截图存为图片或PDF打印(七)

Qt开发 系列文章 - Screenshot-To-PicOrPDF&#xff08;七&#xff09; 目录 前言 一、截图 二、功能实现 1.创建项目 2.新建类 3.编写类 1.定义头文件 2.相关功能函数 3.使用类 总结 前言 本文利用Qt平台&#xff0c;实现屏幕截图功能&#xff0c;并将截图复制、保…

Ubuntu中iptables默认是开启的吗

不&#xff0c;Ubuntu 中 iptables 默认不是开启的。 虽然 Ubuntu 系统默认安装了 iptables 软件包&#xff08;你可以通过 dpkg -l iptables 或 which iptables 命令来验证&#xff09;&#xff0c;但这并不意味着 iptables 规则已经生效。实际上&#xff0c;iptables 的规则…

《从零开始:轻松入门数据结构的世界》

一、为什么数据结构如此重要&#xff1f; 数据结构就像是程序的骨架&#xff0c;它决定了数据在内存中的存储方式&#xff0c;以及我们如何对这些数据进行操作。一个好的数据结构可以大大提高程序的运行效率&#xff0c;减少内存消耗。我们将通过一个简单的比喻来理解这一点&a…

《Django 5 By Example》阅读笔记:p493-p520

《Django 5 By Example》学习第 17 天&#xff0c;p493-p520 总结&#xff0c;总计 28 页。 一、技术总结 1.internationalization(国际化) vs localization(本地化) (1)18n&#xff0c;L10n&#xff0c;g11n 以前总觉得这两个缩写好难记&#xff0c;今天仔细看了下维基百科…

OpenGL 几何着色器高级应用

几何着色器高级应用 概念回顾 几何着色器(Geometry Shader)是 OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心功能是基于输入的图元(如点、线或三角形),生成新的图元,或对输入的图元进行修改。 几何着色器的执行是以图元…

Apache Commons Utils 类库使用

Apache Commons Utils 是一组开源的 Java 工具类库&#xff0c;提供了许多在开发中常用且实用的功能&#xff0c;涵盖了字符串处理、集合操作、日期时间处理、文件操作等多个方面。下面是对 Apache Commons Utils 中一些主要工具类的详细介绍和使用示例。 1. Commons Lang (or…

C# 异常处理全解析:让程序告别崩溃噩梦

一、什么是异常&#xff1f; 异常是程序在运行过程中发生的错误或意外情况。当程序遇到无法正常执行的情形时&#xff0c;会抛出一个异常&#xff0c;以通知程序发生了错误。异常是程序中的一种事件&#xff0c;需要被捕获和处理&#xff0c;否则程序可能会崩溃或终止运行。 …