当前位置:首页 > 问答 > 正文

Kubernetes 证书机制 一文带你彻底厘清 Kubernetes 中的证书工作原理

🔍 一文带你彻底厘清 Kubernetes 中的证书工作原理

最新动态 📢
2025年8月,Kubernetes 社区宣布进一步优化证书自动轮换机制,新版本(v1.30)默认启用更短的证书有效期(从1年缩短至90天),以提升集群安全性,这一变化让证书管理再次成为焦点!


🤔 为什么需要证书?

Kubernetes 是一个分布式系统,组件之间需要安全通信。

  • kube-apiserverkubelet 互相验证身份
  • etcd 集群成员间加密数据同步
  • 用户通过 kubectl 访问集群时的身份认证

如果没有证书,黑客可能冒充节点或窃听流量,后果严重!🚨

Kubernetes 证书机制 一文带你彻底厘清 Kubernetes 中的证书工作原理


📜 Kubernetes 中的证书分类

Kubernetes 的证书主要分四类:

CA 证书(根证书) 🏛️

  • 用途:签发其他证书的“信任锚点”
  • 文件示例:ca.crtca.key
  • 关键点:
    • 一旦泄露,整个集群安全崩塌!
    • 通常由 kubeadm 或手动生成,需离线保存私钥

服务端证书 🌐

  • 用途:证明服务身份(如 apiserver)
  • 示例:apiserver.crt
  • 关键字段:
    • CN (Common Name):传统用法(如 kube-apiserver
    • SANs (Subject Alternative Names):现代标准,包含 IP、DNS 等

客户端证书 👤

  • 用途:证明用户或组件身份(如 kubeletadmin 用户)
  • 示例:admin.crt
  • 关键字段:
    • CN 通常作为用户名(如 system:node:worker1
    • O (Organization) 作为用户组(如 system:nodes

Peer 证书 🤝

  • 用途:组件间双向认证(如 etcd 节点间通信)
  • 示例:etcd-peer.crt

🔧 证书生成方式对比

方法 适用场景 优缺点
kubeadm 快速搭建集群 ✅ 自动生成;❌ 灵活性差
cfssl 自定义证书需求 ✅ 功能强大;❌ 学习成本略高
openssl 手动精细控制 ✅ 通用;❌ 命令复杂易出错
cert-manager 动态证书管理(如 Ingress) ✅ 自动化;❌ 需额外部署

🕵️ 证书实战:从生成到验证

步骤1:手动生成 CA 证书(以 openssl 为例)

# 生成CA私钥  
openssl genrsa -out ca.key 2048  
# 生成CA证书(有效期10年)  
openssl req -x509 -new -nodes -key ca.key -subj "/CN=K8S-CA" -days 3650 -out ca.crt  

步骤2:签发 apiserver 证书

# 生成私钥  
openssl genrsa -out apiserver.key 2048  
# 创建证书签名请求(CSR)  
openssl req -new -key apiserver.key \  
  -subj "/CN=kube-apiserver" \  
  -addext "subjectAltName=DNS:kubernetes,DNS:kubernetes.default,IP:10.96.0.1" \  
  -out apiserver.csr  
# 用CA签发证书  
openssl x509 -req -in apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apiserver.crt -days 365  

步骤3:验证证书内容

openssl x509 -in apiserver.crt -text -noout  

检查关键信息:

Kubernetes 证书机制 一文带你彻底厘清 Kubernetes 中的证书工作原理

  • Issuer:是否由你的 CA 签发
  • SubjectSANs:是否包含正确域名/IP
  • Validity:有效期是否合理

♻️ 证书轮换:躲不开的运维难题

为什么需要轮换?

  • 证书过期会导致服务中断(经典故障:某大厂因证书过期全网宕机 💥)
  • 私钥泄露后需立即撤销

Kubernetes 的自动轮换机制

  • kubelet 证书:1.19+ 版本默认开启(/var/lib/kubelet/pki 下自动更新)
  • kube-controller-manager:通过 --cluster-signing-duration 控制有效期

手动轮换示例(CA 过期时)

  1. 生成新 CA
  2. 逐步为组件签发新证书
  3. 滚动重启服务(注意:etcd 需特殊处理!)

💡 最佳实践

  1. 监控证书过期:使用 kubeadm certs check-expiration 或 Prometheus 告警
  2. 最小权限原则:不同组件用独立证书
  3. 禁用弱算法:避免 SHA-1,推荐 RSA-2048+/ECDSA
  4. 备份 CA:但别放集群里!

Kubernetes 证书体系像城市的身份证系统:

  • CA 是公安局 🏢
  • 服务端证书 是公司门禁卡 🏭
  • 客户端证书 是员工工牌 👩💼

理解它们,你的集群才能既畅通无阻又固若金汤! 🔐

Kubernetes 证书机制 一文带你彻底厘清 Kubernetes 中的证书工作原理

(注:本文测试环境基于 Kubernetes v1.29,2025年8月验证)

发表评论