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

k8s证书理论知识之/etc/kubernetes/pki/ 和/var/lib/kubelet/pki/的区别

注:本文件由deepseek生成,由博主整理

一.提取关键点:证书超时检查 

kubeadm certs check-expiration 命令来检查 /etc/kubernetes/pki/ 下证书的过期时间

sudo openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep -A 2 Validity 命令来检查/var/lib/kubelet/pki/ 下的证书过期时间

二.理论讲解

这是一个非常核心且重要的问题,理解了这两个目录的区别,就对 Kubernetes 的证书体系有了大半的了解。

简单来说,这两个目录存放的证书角色、用途和管理方式完全不同。你可以这样记忆:

  • /etc/kubernetes/pki/:是集群的“身份证总局”,存放着签发所有证书的根证书(CA) 和核心服务(如 API Server) 的身份证书。

  • /var/lib/kubelet/pki/:是每个工作节点的“个人身份证夹”,存放着该节点上 kubelet 进程用于身份认证的客户端证书

下面我们用一张图来更直观地展示它们的核心区别:

代码


📁 /etc/kubernetes/pki/ - 集群的证书权威中心(CA)

这个目录是控制平面(Control Plane)节点的核心密钥库,包含了整个集群的信任根基。

包含的文件示例:

  • ca.crt 和 ca.key集群的根证书和私钥。这是最重要的文件,整个集群的证书体系都基于它建立。如果它丢失或泄露,集群的安全性将受到致命打击。

  • apiserver.crt 和 apiserver.key:API Server 的服务端证书,用于对外提供 HTTPS 服务。

  • apiserver-kubelet-client.crt 和 apiserver-kubelet-client.key:API Server 访问 kubelet 时使用的客户端证书。

  • front-proxy-ca.crt:用于前端代理的 CA 证书。

  • sa.pub 和 sa.key:用于签署 ServiceAccount tokens 的密钥对(注意,它们不是证书)。

  • etcd/ 目录:包含 etcd 集群相关的证书(etcd/server.crtetcd/peer.crtetcd/healthcheck-client.crt 等)。

核心特点:

  1. 集群级别:所有节点都信任这里的 CA 证书。

  2. 手动管理:通常通过 kubeadm 工具进行创建和更新(如 kubeadm initkubeadm certs renew)。

  3. 不会自动轮换:这里的证书(除了 SA 密钥)有固定有效期(通常为 1 年),需要管理员手动干预更新。

  4. 位置固定:只在 Master 节点上存在(或在高可用集群的多个 Master 节点之间同步)。


📁 /var/lib/kubelet/pki/ - Kubelet 的客户端证书库

这个目录存在于集群中的每个节点(包括 Master 和 Worker) 上,是 kubelet 进程维护自己身份的“私人钱包”。

包含的文件示例:

  • kubelet-client-<timestamp>.pem 或 kubelet-client-current.pem:这是最重要的文件。它是一个符号链接,指向 kubelet 当前使用的客户端证书和私钥(PEM 格式合并)。kubelet 使用这个证书向 API Server 证明自己的身份,从而拥有操作该节点资源的权限。

  • kubelet.crt 和 kubelet.key:kubelet 的服务端证书。当 API Server(或其他组件)需要访问 kubelet 的指标接口或进行 exec/logs 操作时,kubelet 会使用这个证书来提供 TLS 服务。

核心特点:

  1. 节点级别:每个节点都有自己的、独一无二的 kubelet 客户端证书。

  2. 自动管理:kubelet 会自动处理其客户端证书的申请和轮换

    • 首次启动:如果该目录为空,kubelet 会向 API Server 发起一个证书签名请求(CSR)。

    • 自动轮换:kubelet 会在证书到期前自动申请新的证书,并更新 kubelet-client-current.pem 的链接指向新证书。这是 Kubernetes 「证书轮换」 功能的核心体现。

  3. 无需手动干预:在集群正常工作的情况下,管理员完全不需要手动管理这个目录下的文件。

  4. 位置分散:在每个节点上都有。


三.总结与对比表

特性/etc/kubernetes/pki//var/lib/kubelet/pki/
角色证书颁发机构(CA) 和核心服务身份Kubelet 进程的身份凭证
主要内容根证书(ca.crt)、API Server 证书、etcd 证书等Kubelet 的客户端证书和服务端证书
管理方式手动管理(通过 kubeadm自动管理(由 kubelet 自动申请和轮换)
证书轮换手动执行 kubeadm certs renew全自动轮换
存在范围仅控制平面节点所有节点(Master 和 Worker)
重要性集群信任根,丢失需重建集群节点身份,丢失可通过重启 kubelet 自动恢复

四.💡 实践提示

  • 当你的 kubectl 命令报错 x509: certificate has expired or is not yet valid 时,首先检查 /etc/kubernetes/pki/ 下的证书是否过期,因为这里的手动管理证书是过期的高发区。

  • 通常情况下,你不应该手动修改或删除 /var/lib/kubelet/pki/ 下的文件。如果怀疑这里的证书有问题,最简单的办法是重启节点上的 kubelet 服务systemctl restart kubelet),它会自动处理证书的恢复。

  • 定期检查:可以使用 kubeadm certs check-expiration 命令来检查 /etc/kubernetes/pki/ 下证书的过期时间,做到心中有数,提前规划更新操作。

http://www.xdnf.cn/news/19970.html

相关文章:

  • 将 PDF 转换为 TIFF 图片:简单有效的 Java 教程
  • 23种设计模式——抽象工厂模式(Abstract Factory Pattern)详解
  • 实战复盘:pnpm Monorepo 中的 Nuxt 依赖地狱——Unhead 升级引发的连锁血案
  • Node.js 18+安装及Claude国内镜像使用、idea中claude插件下载指南
  • MMD动画(二)动作制作
  • Spring线程池ThreadPoolTaskExecutor‌详解
  • 大语言模型的“思考”逻辑:从Token生成到上下文理解的内部流程
  • 我的创作纪念日——《惊变365天》
  • 裸签、Attach、Detach及其验签方式
  • Docker学习笔记(二):镜像与容器管理
  • 基于STM32的智能家居环境监控系统设计
  • 如何看懂GPU架构?万云智算一分钟带你了解GPU参数指标
  • Matter安全实现
  • Deathnote: 1靶场渗透
  • RTC实时时钟RX8025SA国产替代FRTC8025S
  • 2025打磨机器人品牌及自动化打磨抛光设备技术新版分析
  • 为何三折叠手机只有华为可以?看华为Mate XTs非凡大师就知道
  • 【CouponHub项目开发】EasyExcel解析Excel并使用线程池异步执行和延时队列兜底
  • Java GcExcel V8.2 新版本:效率升级与功能突破
  • 5.7 点云公开数据集——3D形状分类/部件分割
  • 企业发完年终奖后,是员工跳槽的高峰期?
  • 《嵌入式硬件(二):中断》
  • 数据可视化大屏精选开源项目
  • 【SuperSocket 】SuperSocket 中自定义 Session
  • [光学原理与应用-402]:设计 - 深紫外皮秒脉冲激光器 - 元件 - AOM零级光与一级光:深紫外皮秒激光器中的核心光学特性与系统应用
  • 决策树算法详解:从原理到实战
  • RabbitMq如何实现幂等性
  • 力扣字符串刷题-六道题记录-1
  • ECMAScript (5)ES6前端开发核心:国际化与格式化、内存管理与性能
  • Lucene 8.7.0 版本的索引文件格式