当前位置: 首页 > news >正文

《k8s 部署》常见报错类型1

1.错误一:CentOS 7 上 kubeadm 版本不兼容问题

错误示例:

错误信息表明:当前安装的 kubeadm 版本仅支持 Kubernetes 控制平面版本 ≥1.27.0,但您尝试部署的集群版本是 v1.25.4。这属于典型的 版本不匹配问题,需通过以下步骤解决。

解决方案:

1. 检查并卸载现有高版本 kubeadm
# 查看当前 kubeadm 版本
kubeadm version
# 卸载现有版本(假设通过 yum 安装)
sudo yum remove kubeadm kubelet kubectl

2.安装匹配 v1.25.4 的 kubeadm 工具链

# 添加阿里云 Kubernetes 仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF# 安装指定版本组件
sudo yum install -y kubeadm-1.25.4-0 kubelet-1.25.4-0 kubectl-1.25.4-0

3.锁定版本防止意外升级

sudo yum install yum-plugin-versionlock
sudo yum versionlock add kubeadm kubelet kubectl

4. 验证版本兼容性

此时应正常显示 v1.25.4 相关镜像列表

5.初始化集群

sudo kubeadm init --config kubeadm.yml

版本兼容性关键点

组件兼容要求错误示例
kubeadm必须精确匹配控制平面版本1.27.0 kubeadm vs 1.25.4
kubelet允许低一个次版本(≤控制平面版本)1.26.x kubelet vs 1.25.4
kubectl允许±1次版本差异1.24-1.26 均兼容 1.25.4

注意:Kubernetes 1.24+ 需手动管理 token4

kubeadm token create --print-join-command

错误二: CentOS 7 上 kubeadm init 预检错误

[root@master ~]# kubeadm init --apiserver-advertise-address=192.168.52.111 --apiserver-bind-port=6443 --cri-socket="unix:///var/run/containerd/containerd.sock" --image-repository registry.aliyuncs.com/google_containers  --kubernetes-version=1.25.4 --pod-network-cidr=10.244.0.0/16  --service-cidr=10.96.0.0/12 [init] Using Kubernetes version: v1.25.4 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred:         [ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists         [ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists         [ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists         [ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists         [ERROR Port-10250]: Port 10250 is in use [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher
[root@master ~]# kubeadm init --apiserver-advertise-address=192.168.52.111 --apiserver-bind-port=6443 --cri-socket="unix:///var/run/containerd/containerd.sock" --image-repository registry.aliyuncs.com/google_containers  --kubernetes-version=1.24.2 --pod-network-cidr=10.244.0.0/16  --service-cidr=10.96.0.0/12
[init] Using Kubernetes version: v1.24.2
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists[ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists[ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists[ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists[ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: "1.25.4" Control plane version: "1.24.2"[ERROR Port-10250]: Port 10250 is in use
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
[root@master ~]#

错误原因分析:

  1. 文件已存在错误
    /etc/kubernetes/manifests/ 中的控制平面组件 YAML 文件是残留文件,通常由以下原因导致:

    • 前次 kubeadm init 失败未完全清理
    • 不完整的 kubeadm reset 操作13
  2. 10250 端口占用
    该端口是 kubelet 的 HTTPS 服务端口,被占用说明:

    • 旧 kubelet 进程未完全终止
    • 其他服务(如残留容器)占用端口

 解决方案:

1. 彻底清理 Kubernetes 环境
# 强制重置集群
sudo kubeadm reset -f# 删除所有残留配置文件
sudo rm -rf /etc/kubernetes/manifests/*
sudo rm -rf /etc/kubernetes/pki
sudo rm -f /etc/kubernetes/*.conf
sudo rm -f $HOME/.kube/config# 清理容器运行时
sudo crictl rm -fa
sudo ctr -n k8s.io containers rm $(sudo ctr -n k8s.io containers list -q)
2. 释放 10250 端口
# 查找占用进程
sudo ss -tulnp | grep 10250# 终止相关进程 (示例)
sudo kill -9 $(pidof kubelet)  # 终止 kubelet
sudo kill -9 $(sudo lsof -t -i:10250)  # 强制终止端口占用进程# 重启容器运行时
sudo systemctl restart containerd
3. 验证环境准备
# 检查端口释放
sudo netstat -tuln | grep 10250  # 应无输出# 检查文件系统
ls /etc/kubernetes/manifests/  # 应显示空目录# 确认 CRI 状态
sudo crictl version  # 应返回正常版本信息
4. 重新初始化集群(根据自己的实际配置)
sudo kubeadm init \--apiserver-advertise-address=192.168.52.111 \--apiserver-bind-port=6443 \--cri-socket="unix:///var/run/containerd/containerd.sock" \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version=1.25.4 \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12 \--ignore-preflight-errors=FileAvailable  # 临时忽略文件存在检查
5. 初始化后配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
关键注意事项
  1. 版本一致性
    确保所有组件版本匹配 1.25.4:

    sudo yum install -y kubelet-1.25.4 kubectl-1.25.4 kubeadm-1.25.4 sudo systemctl enable --now kubelet
  2. CRI 兼容性
    Kubernetes 1.25+ 需使用 containerd 1.6+ 并启用 CRI 插件:

    sudo containerd config default | sudo tee /etc/containerd/config.toml sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml sudo systemctl restart containerd
  3. 防火墙配置
    开放必要端口:

    sudo firewall-cmd --permanent --add-port={6443,10250,2379-2380,30000-32767}/tcp sudo firewall-cmd --reload

相关文章:

  • 前端面试九之Vue Router
  • 【驱动设计的硬件基础】I²C
  • scikit-image (skimage) 完整API参考文档
  • AI是什么?大模型、语料、训练、推理、机器学习、神经网络等专业名词如何关联
  • cuda编程笔记(2.5)--简易的应用代码
  • 5.5.2_1并查集
  • Vue3优质动画库推荐
  • 在windows10上安装nvm以及配置环境
  • Claude Code 是什么?
  • 刷leetcode hot100返航版--字符串6/15
  • python动态蓝色蝴蝶爱心
  • 目标分割数据集大全「包含分割数据标注+训练脚本」 (持续原地更新)
  • 设计模式(10)——创建型模式之抽象工厂
  • Python 文件操作详解
  • 电脑上的.ssh目录只做什么的
  • AMD Pensando Pollara 400Gbps网卡深度解析:超级以太网重塑AI集群网络架构
  • linux多线程之POSIX信号量
  • Python变量与数据类型全解析
  • AI视野:视频处理AI排行榜Top10 | 2025年05月
  • SpringJPA统计数据库表行数及更新频率
  • 天津企业网站排名优化/网络推广是什么
  • java做网站教程/百度广告推广收费标准
  • 淘宝联盟优惠券网站建设/关键词检索
  • vs2013 网站建设/网站推广计划
  • 山东网站开发学校/网站安全查询系统
  • 台州seo网站管理/深圳优化排名公司