当前位置:首页 > 文章列表 > 科技周边 > 业界新闻 > Kubernetes 1.37 Pod Certificates 怎么落地:签发接口、轮换信号与节点侧验收

Kubernetes 1.37 Pod Certificates 怎么落地:签发接口、轮换信号与节点侧验收

来源:17golang原创 2026-08-30 02:20:29 0浏览 收藏

如果一个 Pod 要用 mTLS 访问内部服务,过去常见做法是把证书交给 Secret 管理,或者让外部身份系统负责注入。Kubernetes 1.37 的变化是:Pod Certificates 与 ClusterTrustBundles 已经进入 Stable,Kubelet 可以按 Pod 声明生成私钥、请求签发并把凭据投影到容器文件系统。但这项能力不是“升级集群后自动有证书”,签发控制器仍要由管理员选择和部署,应用也必须处理证书轮换。

真正可落地的最小闭环是:Pod 声明投影卷,Kubelet 创建 PodCertificateRequest,signer controller 写回证书链,应用从 credential bundle 读取凭据,并在文件变化时重新加载。

要点速览
  • Pod Certificates 解决的是 Pod 使用 X.509/TLS/mTLS 身份的分发问题,ClusterTrustBundles 提供匹配的信任锚。
  • 签发器不是 Kubernetes 核心默认组件;没有 signer controller,投影卷不会凭空出现有效证书。
  • 验收不能只看 Pod 为 Running,还要检查 PodCertificateRequest、status.certificateChain、status.beginRefreshAt 与容器内文件更新时间。

Pod Certificates 进入 Stable,解决的不是普通密钥挂载

Kubernetes 官方在 1.37 的发布说明中把 Pod Certificates 和 ClusterTrustBundles 一起列为 Stable。它们把 X.509 凭据的申请、刷新和信任锚分发接到了 Kubelet 与投影卷机制上,适合需要 TLS 或双向 TLS 的工作负载。

它和普通 Secret 的差别在于生命周期。私钥应在工作负载侧生成,证书由签发控制器签名;Kubelet 负责把这套流程接到 Pod 的声明上。这样做的结果不是让所有 Pod 自动拥有身份,而是提供了一条可插拔的发行管道。

签发链路要看清四个角色

部署前先把边界画清:应用只负责读取文件并使用 TLS,Kubelet 负责创建请求和写文件,signer controller 决定是否签发,ClusterTrustBundle 则承载验证对端所需的信任锚。四者缺一不可。

Kubernetes 1.37 Pod Certificates 中 Pod、Kubelet、PodCertificateRequest、signer controller 与 credential bundle 的签发链路

实际顺序可以压缩为一条可验收的链:Pod 被调度后,Kubelet 识别 podCertificateclusterTrustBundle 投影卷;随后按 keyType 生成私钥,创建指向 signer 的 PodCertificateRequest,签发器把证书链写入 status.certificateChain,再用 status.beginRefreshAt 告诉 Kubelet 何时刷新。

这里最容易误判的是“API 对象已创建”不等于“应用已拿到可用身份”。签发器拒绝请求、证书链为空、投影目录尚未更新,都会让 Pod 继续运行却无法完成 mTLS 握手。

从 Pod 声明到节点侧验收,先验请求再验文件

新闻里的 Stable 只说明接口和机制达到稳定阶段,落地时仍要先确认 signer controller 已部署,并且它认可你在投影卷中填写的 signer name。Kubernetes 官方示例使用第三方 Tinycert 进行试验,但官方明确提醒它不是完整生产方案。

验收建议按下面的顺序做,避免只盯着容器启动状态:

  1. 核对 Pod spec 中的 podCertificate projected volume,确认 signer name、keyType 和目标文件名属于同一套约定。
  2. 查看对应的 PodCertificateRequest,确认请求已由 Kubelet 创建,并等待 signer controller 写入 status.certificateChain
  3. 同时检查 status.beginRefreshAt,它是后续轮换观察的时间信号;空值或过期而没有新链,说明刷新链路需要继续排查。
  4. 进入容器核对 credential bundle 或分离文件是否出现,使用证书检查工具确认链条和用途,再做一次实际 TLS/mTLS 握手。

节点侧要关注的是 Kubelet 是否能读取匹配的 ClusterTrustBundle。Kubelet 会按 signer name 和 label selector 收集信任锚,合并后稳定排序,再写入投影路径。应用不能假设文件中证书的顺序代表优先级。

轮换信号出现后,应用必须重新加载凭据

Pod Certificates 的自动轮换由 Kubelet 负责触发,但应用是否能继续通信取决于它是否重新打开凭据。官方文章建议应用通过 inotify 或轮询观察文件变化;只在进程启动时读一次证书的客户端,轮换后仍可能拿着旧证书。

Kubernetes Pod Certificates 轮换边界:beginRefreshAt 触发文件更新后由应用通过 inotify 或轮询重新加载

更稳妥的文件组织是 credential bundle:私钥和证书链放在一个文件中,应用只需要订阅一个文件的变化。若把私钥和证书链拆成多个文件,应用需要处理轮换中间读到新旧文件混合状态的竞态。

生命周期也不能写死。官方说明核心未来签发器的最大生命周期为 24 小时,其他 signer 的最大生命周期为 91 天。这个数字不是应用应当自行推导刷新时间的理由,刷新时机以 signer 返回的 beginRefreshAt 为准。

与 ServiceAccount JWT 怎么选

ServiceAccount JWT 仍然是成熟的默认身份方案,生态支持广,也能用于集群外联邦认证。Pod Certificates 的优势是 proof-of-possession 风格的 X.509 身份:私钥可以留在工作负载侧,对端通过证书链验证身份,更适合已有 TLS/mTLS 体系的服务。

选择时别把“进入 Stable”理解成“全面替换 JWT”。如果下游只接受 JWT,继续使用 ServiceAccount token 反而更省事;只有在服务已经以证书认证、需要双向 TLS,或希望减少 bearer token 复制范围时,Pod Certificates 才值得投入 signer、轮换和客户端改造成本。

判断项更适合 Pod Certificates更适合 ServiceAccount JWT
对端协议已有 TLS/mTLS 或 X.509 校验只接受 JWT 或 OIDC 令牌
私钥边界希望私钥在工作负载侧生成依赖既有 token 投影机制
运维成本能维护 signer 和轮换加载希望沿用成熟默认路径

常见问题

升级到 Kubernetes 1.37 后会自动签发 Pod 证书吗?

不会。核心提供 Kubelet、API 对象和投影机制,但官方说明当前还没有随 Kubernetes 核心发布的 Pod Certificate signer,需要部署兼容的第三方签发器或自行实现。

PodCertificateRequest 已存在但证书文件为空,先查哪里?

先查 signer name 是否匹配、signer controller 是否观察并处理该请求,再看 status.certificateChain 是否写回;不要先把问题归因给容器权限。

ClusterTrustBundle 与证书链是同一个东西吗?

不是。证书链证明工作负载身份,ClusterTrustBundle 提供验证这些证书所需的信任锚,Kubelet 会按选择条件收集并投影到 Pod。

应用只在启动时加载一次证书可以吗?

不建议。证书会自动轮换,应用需要通过 inotify 或轮询发现文件更新并重新加载,否则轮换后可能继续使用旧凭据。

采用前的最小清单

把这项更新带进生产前,至少完成一次小范围验证:部署 signer,创建带两个投影卷的测试 Pod,确认请求对象、证书链、信任锚文件和实际 mTLS 握手都成功;再人为触发或等待一次刷新,确认应用重新加载。任何一项没有可见结果,都不要因为版本已经 Stable 就扩大范围。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
GitHub 如何复制单个文件的永久链接:文件页、行号范围与 Permalink 核对GitHub 如何复制单个文件的永久链接:文件页、行号范围与 Permalink 核对
上一篇
GitHub 如何复制单个文件的永久链接:文件页、行号范围与 Permalink 核对
Go 1.27 嵌入字段可直接写进 struct literal:代码迁移的收益与边界
下一篇
Go 1.27 嵌入字段可直接写进 struct literal:代码迁移的收益与边界
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ljg-skills -
    ljg-skills
    ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
    5436次使用
  • MELO音乐 - AI 音乐生成平台,支持多模态创作能力
    MELO音乐
    MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
    4920次使用
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    4842次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    5105次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    5060次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码