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)
相关推荐
_oP_i3 小时前
Docker 整体架构
docker·容器·架构
ascarl20104 小时前
Kubernetes 环境 NFS 卡死问题排查与解决纪要
云原生·容器·kubernetes
阿里云云原生5 小时前
快速构建企业 AI 开放平台,HiMarket 重磅升级
云原生
谷隐凡二7 小时前
etcd在Kubernetes中的作用简单介绍
数据库·kubernetes·etcd
m0_569531017 小时前
《K8s 网络入门到进阶:Service 与 Ingress 原理、部署方案及核心区别对比》
网络·容器·kubernetes
眠りたいです9 小时前
Docker:容器虚拟化技术基础-namespace,cgroups,资源管理与LXC
运维·docker·中间件·容器
阿里云云原生9 小时前
AgentScope x RocketMQ:打造企业级高可靠 A2A 智能体通信基座
云原生·apache·rocketmq
新手小白*9 小时前
K8s 中的 CoreDNS 组件
云原生·容器·kubernetes
一周困⁸天.10 小时前
K8S-CoreDNS组件
网络·kubernetes
Selegant10 小时前
告别传统部署:用 GraalVM Native Image 构建秒级启动的 Java 微服务
java·开发语言·微服务·云原生·架构