云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > k8s证书过期时间扫描

k8s证书过期时间扫描方式

作者:云原生运维

该文章介绍了多种检查Kubernetes证书过期时间的方法,包括使用openssl命令、kubeadm工具、Shell脚本、Kubernetes API等,文章还提到了一些第三方工具,如cert-manager、kube-cert-manager和PrometheusSSLExporter,以及关键证书的位置

查询证书过期时间的方法

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

openssl x509 -noout -enddate -in /etc/kubernetes/pki/apiserver.crt

示例输出:

notAfter=May 24 12:00:00 2025 GMT

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

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

kubeadm certs check-expiration

输出结果将显示:

检查 kubeconfig 文件中的证书

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

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

自动监控脚本示例

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

#!/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 证书信息:

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:提供证书过期指标并集成告警系统

关键证书位置说明

证书续订操作

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

kubeadm certs renew all

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

docker restart $(docker ps -q -f name=k8s_apiserver)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文