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

openEuler 24.03 (LTS-SP1) 下安装 K8s 集群 + KubeSphere 遇到 etcd 报错的解决方案

目录

openEuler 24.03 (LTS-SP1) 下安装 K8s 集群 + KubeSphere 遇到 etcd 报错的解决方案

🔍 问题背景

🧯 报错成因分析

✅ 解决方案

🔧 修改 etcd 启动配置

🚀 重新部署

📌 建议补充操作

📘 总结


openEuler 24.03 (LTS-SP1) 下安装 K8s 集群 + KubeSphere 遇到 etcd 报错的解决方案

🔍 问题背景

在基于 openEuler 24.03 (LTS-SP1) 安装 Kubernetes + KubeSphere 的过程中,如果目标节点存在残留的 etcd 配置或旧数据目录,kubeadm 会默认尝试以 existing 模式连接 etcd,这会导致如下报错:

[ERROR ExternalEtcdVersion]: Get "https://<etcd-ip>:2379/version": dial tcp <etcd-ip>:2379: connect: connection refused

或者出现 kubeadm 初始化失败,并提示:

error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR ExternalEtcdVersion]: ...

这是因为 etcd 默认使用了已有集群模式 (ETCD_INITIAL_CLUSTER_STATE=existing),但实际并没有运行中或连接成功的 etcd 实例。


🧯 报错成因分析

默认配置下,etcd 会尝试以已有集群成员身份启动:

ETCD_INITIAL_CLUSTER_STATE=existing

这在节点是首次部署或此前部署已重置的情况下将导致连接失败。etcd 无法完成启动,进而导致整个 kubeadm init 流程失败。


✅ 解决方案

🔧 修改 etcd 启动配置

手动修改 etcd 环境变量配置,指定以“新集群”方式启动:

vi /etc/etcd.env

将原有内容:

ETCD_INITIAL_CLUSTER_STATE=existing

修改为:

ETCD_INITIAL_CLUSTER_STATE=new

保存后退出。


🚀 重新部署

修改完后,重新执行部署流程(如使用 KubeKey 安装)即可正常初始化:

kk create cluster -f config-sample.yaml

或直接使用 kubeadm init 命令,确保 etcd 以新集群身份运行,避免连接失败。


📌 建议补充操作

  • 若此前已使用 kubeadm reset,建议清理以下目录与配置:

    rm -rf /etc/kubernetes /var/lib/etcd /etc/cni/net.d
    iptables -F
    
  • 检查 etcd 日志:

    journalctl -u etcd -f
    
  • 推荐使用 kubeadm config migrate 将旧版配置升级为新版本规范:

    kubeadm config migrate --old-config kubeadm-config.yaml --new-config kubeadm-new.yaml
    

📘 总结

openEuler 24.03 (LTS-SP1) 上部署 K8s 集群 + KubeSphere 时,若 etcd 报 connection refused,很可能是集群状态未正确设置。只需将 ETCD_INITIAL_CLUSTER_STATE 修改为 new,即可解决初始化失败问题。
此操作在自定义安装或重装场景下尤为关键。


如需该文章的 Markdown 或 HTML 格式版本,也可提供。是否需要?

http://www.dtcms.com/a/272528.html

相关文章:

  • Qt:按像素切割图片
  • 制胶学习分享
  • FFmpeg在Go、Python、C++、Rust实践案例
  • vue3 el-table 列汉字 排序时排除 null 或空字符串的值
  • rust cargo 编译双架构的库
  • 构建InfluxDB 3 Python插件深入实践指南
  • DDL期间TDSQL异常会话查询造成数据库主备切换
  • linux环境下安装和配置MySQL数据库
  • 关于市场主流自动化测试工具和框架的简要介绍
  • MySQL主键深度解析:数据库设计的核心基石
  • Java学习---JVM(1)
  • 字节跳动高质量声音克龙文字转语音合成软件MegaTTS3整合包
  • 依存句法分析:语言结构的骨架解码器
  • 岛津液相色谱仪配置RF-20AXS荧光检测器的测试安装,校准
  • Ansible:强大的自动部署工具
  • SPGAN: Siamese projection Generative Adversarial Networks
  • 开源 Canvas 和 WebGL 图形库推荐与对比
  • OpenCV 4.10.0 移植 - Android
  • 跨境电商税务解决之道:在合规航道上驶向全球市场
  • Elasticsearch 简介
  • 集成CommitLInt+ESLint+Prettier+StyleLint+LintStaged
  • 节日庆典儿童节婚庆运动会劳动节PPT模版
  • Android Studio 打 release 包 Algorithm HmacPBESHA256 not available 问题解决
  • 【arXiv 2025】新颖方法:基于快速傅里叶变换的高效自注意力,即插即用!
  • 多样化消费摄像头监控功能
  • pdf_copy.ahk
  • 用 LangChain4j 从零实现 RAG:基于 PDF 文档的智能问答系统
  • 《信号与系统》学习笔记——第八章(补充部分)
  • 缺乏日常项目进度例会机制,如何系统推进
  • 基于大模型的膀胱癌全周期精准诊疗方案研究