K8S运维实战之集群证书升级与容器运行时更换全记录
第一部分:Kubernetes集群证书升级实战
tips:此博文只演示一个节点作为示范,所有的集群节点步骤都可以参考。
项目背景
某金融业务系统Kubernetes集群即将面临生产证书集中过期风险(核心组件证书剩余有效期不足90天),需在不影响业务连续性的前提下完成全集群证书轮换。原证书体系采用kubeadm默认1年有效期配置,本次升级后需确保服务端证书有效期延长至10年,客户端证书实现自动续期能力。
实施计划
-
影响评估(2小时)
-
检查当前证书有效期及签发关系
-
确定证书更新顺序(Master节点先行,Worker节点自动续期)
-
-
操作窗口(22:00-24:00)
-
按Master节点→Worker节点顺序执行
-
单节点隔离式操作,业务POD保持跨节点高可用
-
-
回退方案
-
快照备份ETCD数据及/etc/kubernetes目录
-
准备原版本kubeadm应急回退包
-
实施过程
1. 证书健康状态检查
# 查看集群证书有效期分布 kubeadm certs check-expiration | grep -E 'CERTIFICATE|RESIDUAL'
输出关键指标:
apiserver 356d # 服务端证书即将过期 kubelet-client 356d # 客户端证书即将过期 CA 9y # CA根证书无需处理
2. Master节点证书更新
# 执行证书批量更新(需在Master节点操作) kubeadm certs renew all# 验证新证书有效期 kubeadm certs check-expiration | grep 'apiserver'
更新后观察:
apiserver 364d # 有效期已重置
3. 组件服务重启
# 滚动重启控制平面组件 for comp in kube-apiserver kube-controller-manager kube-scheduler etcd; dosystemctl restart $comp && systemctl status $comp --no-pager done
4. Worker节点自动续期配置
# 配置控制器自动续期参数(Master节点操作) vim /etc/kubernetes/manifests/kube-controller-manager.yaml ... spec:containers:- command:- kube-controller-manager...# 所签名证书的有效期限。每个 CSR 可以通过设置 spec.expirationSeconds 来请求更短的证书。- --cluster-signing-duration=87600h0m0s# 启用controner manager自动签发CSR证书,可以不配置,默认就是启用的,但是建议配置上!害怕未来版本发生变化!- --feature-gates=RotateKubeletServerCertificate=true
5. 客户端证书验证
# 模拟证书过期(Worker节点操作) timedatectl set-time '2026-04-09' && systemctl restart kubelet# 观察证书自动轮换 ls -l /var/lib/kubelet/pki/kubelet-client-current.pem
输出验证结果:
kubelet-client-2026-04-09-15-30-29.pem # 新证书已生成
实施结果
-
全集群证书有效期延长至10年
-
建立客户端证书自动续期机制
-
业务POD零中断,API Server请求成功率保持99.99%
第二部分:生产环境容器运行时迁移(Docker→Containerd)
项目背景
在K8S1.23.17版本中,默认的ContainerRuntime为Docker,但是为了更高效的调用容器管理工具,于是决定将Docker与containerd拆分,让K8S直连containerd容器管理工具以至于提高机器性能;某电商平台需将生产集群容器运行时从Docker平滑迁移至Containerd。迁移涉及3个可用区共计100+节点,首期选择非核心业务Worker节点进行技术验证。
实施计划
-
兼容性验证(8小时)
-
测试各类业务POD在Containerd环境下的运行状态
-
验证监控链路、日志采集等配套系统的适配性
-
-
灰度迁移方案
-
采用"节点驱逐→运行时更换→业务回迁"三阶段操作
-
每个先迁移1个Worker节点验证稳定性
-
-
监控指标
-
容器启动耗时(P99<3s)
-
运行时资源消耗(内存增长<15%)
-
详细迁移步骤
1. 节点驱逐预处理
# 设置节点不可调度并驱逐业务POD(Master操作) kubectl drain worker233 --ignore-daemonsets --delete-emptydir-data
关键检查点:
node/worker233 drained # 确认节点已驱逐完成
2. 停止kubelet && 旧运行时卸载
# 停止kubelet服务(Worker节点)
systemctl disable --now kubelet
# 停止Docker服务(Worker节点) systemctl disable --now docker# 清理残留配置 rm -rf /etc/docker /var/lib/docker
# 我这里自己准备了一键卸载脚本
./install-docker.sh r
3. Containerd部署
# 我这里也准备了一键部署containerd服务脚本./install-ctr.sh i
# 使用离线包安装(版本1.6.36) tar Cxzvvf /usr/local containerd-1.6.36-linux-amd64.tar.gz# 生成默认配置文件 containerd config default > /etc/containerd/config.toml# 配置阿里云镜像加速 sed -i 's|registry.k8s.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml
4. Kubelet适配配置
# 修改运行时接入点 cat /var/lib/kubelet/kubeadm-flags.env KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.6 --container-runtime-endpoint=unix:///run/containerd/containerd.sock --container-runtime=remote"ll /run/containerd/containerd.sock srw-rw---- 1 root root 0 Apr 15 19:57 /run/containerd/containerd.sock
5. worker节点重新上线
# 重启运行时服务
systemctl enable --now containerd# 恢复节点调度
kubectl uncordon worker233# 运行时状态验证
kubectl get node worker233 -o jsonpath='{.status.nodeInfo.containerRuntimeVersion}'
预期输出:
containerd://1.6.36
实施结果
-
完成首批8个Worker节点迁移,容器启动耗时降低22%
-
节点内存占用减少18%,符合预期优化目标
-
业务监控指标无异常波动,日志采集链路正常
最后项目总结
通过本次双轨制运维改造:
-
建立证书全生命周期管理体系,消除因证书过期导致的集群故障风险
-
完成容器运行时技术栈升级,为后续Kubernetes版本升级铺平道路
-
形成标准化运维操作手册,包含7类异常场景的应急处置方案
后续计划:
3周内完成全量Worker节点运行时迁移
建设证书过期主动告警机制
开展containerd调优专项工作
【操作注意要点】
-
证书更新后必须重启关联系统服务(apiserver等)
-
Containerd配置需统一镜像仓库地址避免拉取失败
-
生产环境建议采用Ansible进行批量节点操作
相关文章:
K8S运维实战之集群证书升级与容器运行时更换全记录
第一部分:Kubernetes集群证书升级实战 tips:此博文只演示一个节点作为示范,所有的集群节点步骤都可以参考。 项目背景 某金融业务系统Kubernetes集群即将面临生产证书集中过期风险(核心组件证书剩余有效期不足90天),…...
IntelliJ IDEA clean git password
IntelliJ IDEA clean git password 清除git密码 方法一:(这个要特别注意啊,恢复默认设置,你的插件什么要重新下载了) File->Manage IDE Settings->Restore Default Settings以恢复IDEA的默认设置(可选); 清空…...
【已更新完毕】2025泰迪杯数据挖掘竞赛C题数学建模思路代码文章教学:竞赛智能客服机器人构建
完整内容请看文末最后的推广群 基于大模型的竞赛智能客服机器人构建 摘要 随着国内学科和技能竞赛的增多,参赛者对竞赛相关信息的需求不断上升,但传统人工客服存在效率低、成本高、服务不稳定和用户体验差的问题。因此,设计一款智能客服机器…...
2025年4月19日 记录大模型出现的计算问题
2025年4月19日 记录大模型出现的计算问题,用了四个大模型计算json的数值,3个错误,1个正确 问题 Class Train Val answer 2574 853 screen 5025 1959 blackBoard 7847 3445 teacher 8490 3228 stand…...
ACI EP Learning Whitepaper 3. Disabling IP Data-plane Learning 功能
目录 1. 使用场景 1.1 未disable IP data-plane learning时 1.2 disable IP data-plane learning后 2. 一代Leaf注意事项 3. L2 未知单播注意事项 1. 使用场景 Windows网卡的动态负载均衡绑定模式等。或多个设备共享相同VIP并通过ARP/GARP/ND来宣告VIP切换时,这些外部设…...
C++入门七式——模板初阶
目录 函数模板 函数模板概念 函数模板格式 函数模板的原理 函数模板的实例化 模板参数的匹配原则 类模板 类模板的定义格式 类模板的显式实例化 当面对下面的代码时,大家会不会有一种无力的感觉?明明这些代码差不多,只是因为类型不…...
计算机网络 - 在浏览器中输入 URL 地址到显示主页的过程?
第一步,浏览器通过 DNS 来解析 URL,得到相应的 ip 地址(到哪里找) 和 方法(做什么) 第二步,浏览器于服务器建立 TCP 三次握手连接 第三步,建立好连接后,浏览器会组装 HTTP 请求报文…...
【教程】检查RDMA网卡状态和测试带宽 | 附测试脚本
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 检查硬件和驱动状态 测试RDMA通信 报错修复 对于交换机的配置,可以看这篇: 【教程】详解配置多台主机通过交换机实现互…...
(二)Trae 配置C++ 编译
Trae配置c编译 零 CMake 编译C0.1 下载安装0.2 安装设置0.3 三种编译方式(见 下文 一 二 三)0.4 调试 (见 下文四) 一 使用MSVC方式编译1.1 安装编译环境1.2安装插件1.3 设置文件 二 使用GCC方式2.1 安装编译环境2.1.1下载:[MinGw](https://gcc-mcf.lhmouse.com/)2.1.2安装:(以…...
Doris 本地部署集群重启后报错
报错描述 Docker 版本: apache/doris:fe-2.1.9 apache/doris:be-2.1.9 连接 MySQL 报错: ERROR 2003 (HY000): Cant connect to MySQL server on 127.0.0.1:9030 (111)FE 日志: INFO (UNKNOWN fe_e7cff187_69d4_42ee_90be_147e87310549(-1…...
日本公司如何实现B2B商城订货系统的自动化和个性化?
在日本构建具备前后台日文本地化、业务员代客下单、一客一价、智能拆单发货的B2B电商系统,需结合日本商业习惯与技术实现。以下是关键模块的落地方案: 一、系统架构设计 1. 前端本地化 语言与UI适配 采用全日语界面,包含敬语体系(…...
自动化测试相关协议深度剖析及A2A、MCP协议自动化测试应用展望
一、不同协议底层逻辑关联分析 1. OPENAPI协议 OPENAPI 协议核心在于定义 API 的规范结构,它使用 YAML 或 JSON 格式来描述 API 的端点、请求参数、响应格式等信息。其底层逻辑是构建一个清晰、标准化的 API 描述文档,方便不同的客户端和服务端进行对接…...
ReAct、CoT 和 ToT:大模型提示词推理架构的对比分析
ReAct、CoT 和 ToT:大模型提示词推理架构的对比分析 在大型语言模型(LLM)的研究与应用中,如何有效提升模型在复杂任务上的推理能力是关键问题之一。目前,ReAct(Reasoning and Acting)、CoT&…...
用魔法打败魔法——获取软件安装路径
用魔法打败魔法——获取软件安装路径 🌟嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录 背景普通方法用魔法一句话 1.首先新建‘PC自动化应…...
2024-04-19| Java: Documented注解学习 JavaDoc
在 Java 中,Documented 是一个元注解(meta-annotation),用于标记其他注解,表明这些注解应该被包含在 JavaDoc 文档中。以下是关于 Documented 注解的作用的简要说明: 作用 记录注解信息到 JavaDoc&#x…...
Spring Boot常用注解全解析:从入门到实战
🌱 Spring Boot常用注解全解析:从入门到实战 #SpringBoot核心 #注解详解 #开发技巧 #高效编程 一、核心启动与配置注解 1. SpringBootApplication 作用:标记主启动类,整合了Configuration、EnableAutoConfiguration和Component…...
【重学Android】1.关于@Composer注解的一点知识笔记
最新因为一些原因,开始重新学习Android及kotlin编程,也觉得可以顺带记录下这个过程中的一些知识点,也可以用作日后自己查找复习。 Composable 注解在 Android 开发中的使用 Composable 是 Jetpack Compose(Android 的现代声明式…...
【排队论】Probabilistic Forecasts of Bike-Sharing Systems for Journey Planning
Probabilistic Forecasts of Bike-Sharing Systems forJourney Planning abstract 我们研究了对共享单车系统(BSS)车站未来自行车可用性进行预测的问题。这是相关的,以便提出建议,保证用户能够进行旅行的概率足够高。为此&#x…...
大数据平台简介
一、分布式系统基础架构 (一)定义与核心特征 分布式系统是由多台计算机(节点)通过网络协作组成的系统,对外表现为一个统一整体。其核心特征包括: 去中心化:节点平等或分角色协作(如…...
加一:从简单问题到复杂边界的深度思考
加一:从简单问题到复杂边界的深度思考 引言 在算法世界里,有些问题看似简单,实则暗藏玄机,其中“加一”问题就是一个典型例子。所谓“加一”,通常指的是给一个由数字组成的数组表示的整数加一,这听起来简…...
高精度算法(加、减、乘、除、阶乘和)
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 唯有主动付出,才有丰富的果…...
实战设计模式之备忘录模式
概述 与解释器模式、迭代器模式一样,备忘录模式也是一种行为设计模式。备忘录模式允许我们保存一个对象的状态,并在稍后恢复到这个状态。该模式非常适合于需要回滚、撤销或历史记录等功能的应用场景。通过使用备忘录模式,开发者可以轻松添加诸…...
keil5 µVision 升级为V5.40.0.0:增加了对STM32CubeMX作为全局生成器的支持,主要有哪些好处?
在Keil5 μVision V5.40.0.0版本中,增加了对STM32CubeMX作为全局生成器的支持,这一更新主要带来了以下三方面的提升: 开发流程整合STM32CubeMX原本就支持生成Keil项目代码,但新版本将这一集成升级为“全局生成器”级别,意味着STM32CubeMX生成的代码能直接成为Keil项目的核…...
吉尔吉斯斯坦工商会代表团赴齐河德瑞新能源汽车考察
德州齐河,2025年4月15日电 时中美贸易突变之际,乘国家一带一路之风。 展中国新能源之宏图,塑国贸体系之新方向。 今日上午,吉尔吉斯斯坦共和国工商会代表团一行三人受邀抵达济南,开启对德瑞新能源科技有限公司&…...
无人机在农业中的应用与挑战!
一、无人机在农业中的作用 1. 提升作业效率与降低成本 无人机在喷洒农药、播种、施肥、吊运等环节显著提升效率。例如,湖北秭归县使用大疆T100无人机吊运脐橙,单次85公斤的运输任务仅需2分钟,而人工需1小时,综合成本降低250元…...
放松大脑的方法
帮助一个人放松大脑,需要结合生理调节、心理技巧和环境优化。以下是一些科学有效的方法,涵盖即时缓解和长期习惯培养: 一、即时放松技巧(快速起效) 1. 深呼吸法(4-7-8呼吸) 方法:吸…...
QT网络拓扑图绘制实验
前言 在网络通讯中,我qt常用的是TCP或者UDP协议,就比方说TCP吧,一台服务器有时可能会和多台客户端相连接,我之前都是处理单链接情况,最近研究图结构的时候,突然就想到了这个问题。那么如何解决这个问题呢&…...
英语四级翻译题练习文章示例
大学正慢慢成为过去吗?Are universiities slowly becoming a thing of the past? 1.1900年前后,法国艺术家让-马克科泰接受委托绘制一组图画,描绘他认为的2000年人们可能过上的生活。Around 1900, the French artist Jean-Marc Cote was commissioned …...
支持中文对齐的命令行表格打印python库——tableprint
文章目录 快速入门 还在为表格中含有中文,命令行打印无法对齐而苦恼吗? 还在为冗长的数据添加代码而抓狂吗? tableprint来了!!!,它完美的解决了上述两个问题,快来试试吧!…...
从《周游记3》演绎歌剧版《菊花台》,周杰伦婚礼曲目意大利文版惊喜亮相
今天(4月19日)22:00,由魔胴西西里咖啡冠名的户外实境互动综艺《周游记3》第四期即将播出。本期节目中,“J式之旅”发起人周杰伦和林暐恒、杜国璋、陈冠霖、陈冠廷,将继续意大利之旅,从那不勒斯的百年老店到…...
