k8s证书过期时间扫描

查询证书过期时间的方法

使用 openssl 命令可以检查证书过期时间,适用于集群内外的证书文件:

bash 复制代码
openssl x509 -noout -enddate -in /etc/kubernetes/pki/apiserver.crt

示例输出:

复制代码
notAfter=May 24 12:00:00 2025 GMT

扫描集群内所有证书过期时间

通过 kubeadm 工具一键检查集群证书有效期:

bash 复制代码
kubeadm certs check-expiration

输出结果将显示:

  • 证书路径
  • 过期时间
  • 剩余天数
  • 是否自动续订

检查 kubeconfig 文件中的证书

提取 kubeconfig 中的证书并验证有效期:

bash 复制代码
grep client-certificate ~/.kube/config | awk '{print $2}' | xargs openssl x509 -noout -enddate

自动监控脚本示例

以下 Shell 脚本可批量扫描指定目录下的证书:

bash 复制代码
#!/bin/bash
CERT_DIR="/etc/kubernetes/pki"
THRESHOLD_DAYS=30

find $CERT_DIR -type f -name "*.crt" | while read cert; do
    expiry=$(openssl x509 -enddate -noout -in "$cert" | cut -d= -f2)
    remaining_days=$(( ($(date -d "$expiry" +%s) - $(date +%s)) / 86400 ))
    
    if [ $remaining_days -lt $THRESHOLD_DAYS ]; then
        echo "ALERT: $cert 将在 $remaining_days 天后过期 ($expiry)"
    fi
done

使用 kubelet 证书API

通过 Kubernetes API 获取 kubelet 证书信息:

bash 复制代码
kubectl get --raw /api/v1/nodes/<node-name>/proxy/configz | jq '.kubeletConfig.serverTLSBootstrap' 

第三方工具推荐

  1. cert-manager:自动管理证书生命周期,支持告警功能
  2. kube-cert-manager:专为 Kubernetes 设计的证书监控工具
  3. Prometheus SSL Exporter:提供证书过期指标并集成告警系统

关键证书位置说明

  • /etc/kubernetes/pki/:控制平面核心证书
  • /var/lib/kubelet/pki/:kubelet 客户端证书
  • ~/.kube/config:用户访问凭据
  • /etc/kubernetes/manifests/:静态 Pod 使用的证书

证书续订操作

对于 kubeadm 管理的集群,执行自动续订:

bash 复制代码
kubeadm certs renew all

完成后需重启控制平面组件:

bash 复制代码
docker restart $(docker ps -q -f name=k8s_apiserver)
相关推荐
张忠琳11 小时前
【NVIDIA】 NVIDIA Container Toolkit v1.19.1 — OCI 模块超深度分析之三
云原生·容器·架构·kubernetes·nvidia
阿里云云原生12 小时前
让 AI Agent 看见正在发生的业务,阿里云 EventHouse 正式商业化
云原生
Elastic 中国社区官方博客12 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
AOwhisky13 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
风曦Kisaki15 小时前
#企业级docker私有仓库构建:harbor仓库与阿里云镜像仓库
阿里云·docker·容器
期待着201315 小时前
docker 安装 ,在centos7.9
运维·docker·容器
微三云 - 廖会灵 (私域系统开发)16 小时前
电商系统从单体到微服务拆分实践:拆什么、怎么拆、拆完后怎么办
微服务·云原生·架构
骑上单车去旅行17 小时前
Docker Compose 命令完全指南:从构建到运维
docker·容器·eureka
前端Baymax18 小时前
K8s PodCrashLoopBackOff假阳性排查
云原生·容器·kubernetes
spider_xcxc19 小时前
K8s 部署学习笔记
docker·容器·kubernetes·云计算·k8s