k8s证书过期时间扫描方式

 更新时间:2025年10月30日 11:07:04   作者:云原生运维  
该文章介绍了多种检查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:提供证书过期指标并集成告警系统

关键证书位置说明

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

证书续订操作

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

kubeadm certs renew all

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

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

总结

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

相关文章

  • k8s按需创建PV和使用PVC详解

    k8s按需创建PV和使用PVC详解

    Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收策略和绑定模式
    2025-09-09
  • K8S 中 kubectl 命令详解

    K8S 中 kubectl 命令详解

    这篇文章主要介绍了K8S 中 kubectl 命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • K8S之StatefulSet有状态服务详解

    K8S之StatefulSet有状态服务详解

    本文主要介绍了K8S之StatefulSet有状态服务详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Kubernetes集群环境初始化

    Kubernetes集群环境初始化

    这篇文章介绍了Kubernetes集群环境初始化的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Kubernetes中的service使用及说明

    Kubernetes中的service使用及说明

    Kubernetes Service通过固定IP和端口实现Pod的负载均衡和服务发现,解决动态IP问题,支持ClusterIP、NodePort、LoadBalancer等五种类型,适用于集群内通信、对外暴露及访问外部服务,结合Endpoints和负载均衡策略确保服务稳定性
    2025-10-10
  • 云原生技术kubernetes之volumes容器的使用

    云原生技术kubernetes之volumes容器的使用

    这篇文章主要为大家介绍了云原生技术kubernetes之volumes容器使用方式, 有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • k8s集群调度详解(kube-scheduler)

    k8s集群调度详解(kube-scheduler)

    Kubernetes调度器负责将Pod分配至Node节点,采用预选(资源匹配)和优选(资源利用率、镜像缓存)策略,支持指定节点、标签及亲和性(软/硬策略)调度,确保资源高效利用与灵活分配
    2025-09-09
  • K8S的dashboard使用token登录的操作流程

    K8S的dashboard使用token登录的操作流程

    Dashboard 支持 Kubeconfig 和 Token 两种认证方式,这里测试 Token 认证方式登录,本文介绍K8S的dashboard如何使用token登录,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • Kubernetes DNS解析实战过程

    Kubernetes DNS解析实战过程

    Kubernetes中,Pod需Ready状态才会被CoreDNS解析,而Service创建时即添加记录,当服务依赖Pod解析时易引发启动死循环,通过设置Service的publishNotReadyAddresses为true,可解决此问题,允许未就绪Pod的IP立即被解析
    2025-09-09
  • 如何把k8s容器里的文件复制到本地

    如何把k8s容器里的文件复制到本地

    这篇文章主要介绍了如何把k8s容器里的文件复制到本地方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论