kubeadm部署k8s报错解决

本文介绍了在使用kubeadm部署k8s时遇到的两个问题及其解决方法。第一个问题是节点网络未准备好,原因是cni配置未初始化,通过在Flannel配置文件中添加cniVersion字段作为临时解决方案,或在Master上更新Flannel。第二个问题是kubelet获取节点失败,原因是因为CPU资源不足,通过调整kubelet绑定的CPU核数至2来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、node01 network is not ready: runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

环境

cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
uname -a
Linux master01 3.10.0-1127.18.2.el7.x86_64 #1 SMP Sun Jul 26 15:27:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

k8s软件相关版本

kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032"
### 解决Ubuntu上安装Kubernetes时遇到的错误 当在Ubuntu上安装Kubernetes时,可能会遇到各种各样的问题。其中一种常见的问题是等待控制平面启动超时的问题: ``` [kubelet-check] Initial timeout of 40s passed. Unfortunately, an error has occurred: timed out waiting for the condition This error is likely caused by: - The kubelet is not running - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)[^4] ``` #### 错误原因分析 上述错误通常由以下几个原因之一引起: 1. **kubelet未运行** 2. **节点配置不正确**(例如所需的cgroup被禁用) #### 解决方案 为了修复这个问题,可以按照以下方法操作。 ##### 检查并启用必要的内核模块和支持功能 确保启用了所有必需的Linux内核特性,特别是对于容器的支持。可以通过执行下面命令来加载这些模块: ```bash sudo modprobe overlay sudo modprobe br_netfilter ``` 设置系统参数以允许桥接流量转发IPv4数据包给iptables处理: ```bash cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system ``` ##### 配置APT源和安装Docker CE作为容器运行时环境 由于Kubernetes默认使用`containerd`或`cri-o`作为其容器运行时接口(CRI),但是很多情况下也会选择Docker作为替代品。这里提供如何通过官方文档推荐的方式安装Docker的方法[^2]: ```bash # 更新软件包索引 sudo apt-get update && \ # 安装必要工具 sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release && \ # 添加Docker GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \ # 再次更新软件包列表 sudo apt-get update && \ # 安装特定版本的docker-ce sudo apt-get install docker-ce=5:20.10.7~3-0~ubuntu-focal docker-ce-cli=5:20.10.7~3-0~ubuntu-focal containerd.io ``` 注意:这里的Docker版本号可以根据实际需求调整。 ##### 设置swapoff 关闭交换分区(swap),因为开启swap会影响kubernetes调度器性能甚至导致组件无法正常工作。编辑/etc/fstab文件移除任何关于swap条目或者简单地临时关闭它直到重启为止: ```bash sudo swapoff -a ``` ##### 安装指定版本的Kubernetes组件 为了避免兼容性问题,建议安装相同的主要次要版本系列下的kubelet、kubeadm以及kubectl。例如要安装v1.14.x版本,则可采用如下方式完成部署: ```bash sudo apt-mark unhold kubeadm kubectl kubelet sudo apt-get remove kubeadm kubectl kubelet || true sudo apt-get update && sudo apt-get install -y kubelet=1.14.6-00 kubeadm=1.14.6-00 kubectl=1.14.6-00 sudo apt-mark hold kubeadm kubectl kubelet ``` 以上步骤有助于解决因kubelet未能及时启动而导致初始化失败的情况。如果仍然存在问题,请进一步检查日志信息以便更精确地定位故障所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空无限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值