【云原生】Kubernetes----证书过期处理办法

news2024/10/6 6:41:25

目录

引言

一、证书过期的问题与影响

二、解决方案

(一)查看证书剩余时间

(二)备份重要数据

(三)更新证书

(四)重启相关组件的pod


引言

随着云计算技术的飞速发展,Kubernetes已成为企业构建、扩展和管理容器化应用程序的首选平台。然而,随着集群的持续运行,在企业中经常会遇到一个问题——Kubernetes集群的证书过期。这个问题不仅影响集群的稳定性,还可能带来安全风险。本文将深入探讨Kubernetes证书过期的问题、影响以及解决方案

一、证书过期的问题与影响

Kubernetes集群中的各个组件(如API服务器、节点、控制器管理器等)之间使用证书进行身份验证和安全传输数据。然而,由于证书具有有效期限,一旦证书过期,集群中的组件将无法正常通信,导致应用程序无法正常运行。

具体来说,当Kubernetes集群证书过期时,可能出现以下情况:

1.kubectl命令无法连接到集群,报错“Unable to connect to the server: x509: certificate has expired or is not yet valid”。

2.集群中的Pod可能无法启动或运行异常,因为Kubelet组件无法与API服务器进行通信。

3.集群的监控和日志收集等功能可能受到影响,因为相关组件无法正常工作。

二、解决方案

(一)查看证书剩余时间

使用:kubeadm certs check-expiration命令查询,这种方式仅限于使用kubeadm安装的k8s集群,如果使用二进制安装的,需要使用创建证书的工具去查询

[root@master01 ~]#kubeadm certs check-expiration
[check-expiration] Reading configuration from the cluster...
[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'

CERTIFICATE                EXPIRES                  RESIDUAL TIME   CERTIFICATE AUTHORITY   EXTERNALLY MANAGED
admin.conf                 May 16, 2025 07:16 UTC   330d                                    no      
apiserver                  May 16, 2025 07:16 UTC   330d            ca                      no      
apiserver-etcd-client      May 16, 2025 07:16 UTC   330d            etcd-ca                 no      
apiserver-kubelet-client   May 16, 2025 07:16 UTC   330d            ca                      no      
controller-manager.conf    May 16, 2025 07:16 UTC   330d                                    no      
etcd-healthcheck-client    May 16, 2025 07:16 UTC   330d            etcd-ca                 no      
etcd-peer                  May 16, 2025 07:16 UTC   330d            etcd-ca                 no      
etcd-server                May 16, 2025 07:16 UTC   330d            etcd-ca                 no      
front-proxy-client         May 16, 2025 07:16 UTC   330d            front-proxy-ca          no      
scheduler.conf             May 16, 2025 07:16 UTC   330d                                    no      

CERTIFICATE AUTHORITY   EXPIRES                  RESIDUAL TIME   EXTERNALLY MANAGED
ca                      May 14, 2034 07:16 UTC   9y              no      
etcd-ca                 May 14, 2034 07:16 UTC   9y              no      
front-proxy-ca          May 14, 2034 07:16 UTC   9y              no  

标题含义

CERTIFICATE:这是指具体的证书名称

EXPIRES:这表示证书的到期日期和时间

RESIDUAL TIME:这是证书剩余的有效期。例如,330d表示还有 330 天到期

CERTIFICATE AUTHORITY:签发该证书的证书颁发机构(CA)的名称。例如,apiserver 证书的签发者是 ca

EXTERNALLY MANAGED:这表示证书是否由外部管理。如果标记为 no,则表明 kubeadm 管理这些证书。如果标记为 yes,则表明证书可能由其他工具或方法管理

证书作用

admin.conf

作用:用于管理员与Kubernetes API服务器进行交互的身份验证。这个配置文件包含了访问API服务器所需的证书和密钥。

apiserver

作用:安全通信:API服务器使用此证书与其他集群组件(如kubelet、控制器管理器等)进行TLS加密通信。

身份验证:确保只有授权的客户端可以访问API服务器。

apiserver-etcd-client

作用:API服务器用于与etcd集群通信的客户端证书,确保API服务器与etcd之间的通信是加密和安全的。

apiserver-kubelet-client

作用:API服务器用于与kubelet通信的客户端证书,确保API服务器可以安全地与集群中的节点进行通信。

controller-manager.conf

作用:控制器管理器用于与API服务器交互的身份验证证书,确保控制器管理器可以访问和操作集群资源。

etcd-healthcheck-client

作用:用于etcd健康检查的客户端证书,确保可以安全地检查etcd集群的健康状态。

etcd-peer

作用:etcd集群中节点之间通信的证书,确保etcd集群内部的通信是加密和安全的。

etcd-server

作用:etcd服务器用于与客户端通信的证书,确保etcd服务器可以安全地与集群中的其他组件进行通信。

front-proxy-client

作用:前端代理客户端证书,用于与API服务器进行身份验证,通常与某些代理或负载均衡器相关。

scheduler.conf

作用:调度器用于与API服务器交互的身份验证证书,确保调度器可以访问和操作集群资源。

根证书

ca(Certificate Authority)

作用:根证书颁发机构,用于签发和验证集群中其他所有证书的有效性。这是整个证书信任链的起点。

etcd-ca

作用:etcd集群的根证书颁发机构,专门用于签发和验证etcd相关的证书。

front-proxy-ca

作用:前端代理的根证书颁发机构,用于签发和验证与前端代理相关的证书。

(二)备份重要数据

数据对运维人员来说是非常重要的东西,为防止证书更新失败,需要将之前的证书进行备份,万一证书更新失败后,K8S集群还能再有效期内正常运行,而后重新更新证书

需要进行备份的文件有两个

[root@master01 ~]#ll /etc/kubernetes/pki/
总用量 68
-rw-r--r-- 1 root root 1265 5月  16 15:16 apiserver.crt
-rw-r--r-- 1 root root 1135 5月  16 15:16 apiserver-etcd-client.crt
-rw------- 1 root root 1675 5月  16 15:16 apiserver-etcd-client.key
-rw------- 1 root root 1675 5月  16 15:16 apiserver.key
-rw-r--r-- 1 root root 1143 5月  16 15:16 apiserver-kubelet-client.crt
-rw------- 1 root root 1675 5月  16 15:16 apiserver-kubelet-client.key
-rw-r--r-- 1 root root 1066 5月  16 15:16 ca.crt
-rw------- 1 root root 1675 5月  16 15:16 ca.key
drwxr-xr-x 2 root root  162 5月  16 15:16 etcd
-rw-r--r-- 1 root root 1078 5月  16 15:16 front-proxy-ca.crt
-rw------- 1 root root 1675 5月  16 15:16 front-proxy-ca.key
-rw-r--r-- 1 root root 1103 5月  16 15:16 front-proxy-client.crt
-rw------- 1 root root 1679 5月  16 15:16 front-proxy-client.key
-rw------- 1 root root 1679 5月  16 15:16 sa.key
-rw------- 1 root root  451 5月  16 15:16 sa.pub
[root@master01 ~]#ll /var/lib/etcd/
总用量 0
drwx------ 4 root root 29 6月  13 14:44 member
'------------------------------------------------------------------------------------'
/etc/kubernetes/pki/:此目录存放的是旧的证书文件
/var/lib/etcd/:存放etcd数据,整个集群的业务以及组件通信都在其中

备份数据

[root@master01 ~]#mkdir -p /k8s/bak/
#备份证书
[root@master01 ~]#cp -ar /etc/kubernetes/pki/ /k8s/bak/
#备份数据库
[root@master01 ~]#cp -ar /var/lib/etcd/ /k8s/bak/
[root@master01 ~]#ll /k8s/bak/
总用量 4
drwx------ 3 root root   20 6月  13 14:44 etcd
drwxr-xr-x 3 root root 4096 6月   6 08:51 pki

(三)更新证书

根证书默认都是十年,所以需要升级客户端证书

使用:kubeadm certs renew all命令。升级所有证书

也可以升级单独的证书,例如:kubeadm certs renew apiserver 仅重新生成 API 服务器的证书

[root@master01 ~]#kubeadm certs renew all
[renew] Reading configuration from the cluster...
[renew] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'

certificate embedded in the kubeconfig file for the admin to use and for kubeadm itself renewed
certificate for serving the Kubernetes API renewed
certificate the apiserver uses to access etcd renewed
certificate for the API server to connect to kubelet renewed
certificate embedded in the kubeconfig file for the controller manager to use renewed
certificate for liveness probes to healthcheck etcd renewed
certificate for etcd nodes to communicate with each other renewed
certificate for serving etcd renewed
certificate for the front proxy client renewed
certificate embedded in the kubeconfig file for the scheduler manager to use renewed

Done renewing certificates. You must restart the kube-apiserver, kube-controller-manager, kube-scheduler and etcd, so that they can use the new certificates.

升级后查看证书有效期时限

(四)重启相关组件的pod

更新完证书之后,相关pod还是以之前的证书为凭证,所以需要重启相关组件,使新的证书生效

在更新证书时,同样会有提示信息

直接删除之前的组件pod,它们不是由pod控制器管理,而是由集群管理工具集群管理工具kubeadm直接重新拉取

kubectl delete pods -n kube-system kube-apiserver-master01 kube-controller-manager-master01 kube-scheduler-master01 etcd-master01

[root@master01 ~]#kubectl delete pods -n kube-system kube-apiserver-master01 kube-controller-manager-master01 kube-scheduler-master01 etcd-master01
pod "kube-apiserver-master01" deleted
pod "kube-controller-manager-master01" deleted
pod "kube-scheduler-master01" deleted
pod "etcd-master01" deleted
[root@master01 ~]#kubectl get pod -n kube-system 
NAME                               READY   STATUS    RESTARTS   AGE
coredns-74ff55c5b-dwzdp            1/1     Running   10         34d
coredns-74ff55c5b-ws8c8            1/1     Running   10         34d
etcd-master01                      1/1     Running   10         9s
kube-apiserver-master01            1/1     Running   5          9s
kube-controller-manager-master01   1/1     Running   45         9s
kube-proxy-58zbl                   1/1     Running   0          3d6h
kube-proxy-9v7jw                   1/1     Running   0          3d6h
kube-proxy-xdgb4                   1/1     Running   0          3d6h
kube-scheduler-master01            1/1     Running   48         9s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1839747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Building wheels for collected packages: mmcv, mmcv-full 卡住

安装 anime-face-detector 的时候遇到一个问题:Installation takes forever #1386:在构建mmcv-full时卡住,这里分享下解决方法(安装 mmcv 同理,将下面命令中的 mmcv-full 替换成 mmcv) 具体表现如下&#x…

视频监控管理平台智能边缘分析一体机安防监控平台离岗检测算法

在工业自动化和智能制造的背景下,智能边缘分析一体机的应用日益广泛。这些设备通常在关键岗位上执行监控、分析和数据处理任务。然而,设备的稳定运行至关重要,一旦发生故障或离岗,可能会导致生产线停滞甚至安全事故。因此&#xf…

MySQL之复制(五)

复制 复制的原理 复制文件 3.master.info 这个文件用于保存备库连接到主库所需要的信息,格式为纯文本(每行一个值),不同的MySQL版本,其记录的信息也可能不同。此文件不能删除,否则备库在重启后无法连接到主库。这个文件以文本的…

浅谈设计师的设计地位

在当今这个创意无限的时代,设计师的地位日益凸显。他们以独特的视角和精湛的技能,为我们的生活带来了无尽的色彩与灵感。然而,随着行业的不断发展,设计师如何在众多同行中脱颖而出,提升自己的设计地位呢?答…

openwrt 编译(x86)——新手上路之详细教程(有问题请在评论区,本人刚从头搞完,大家一起探讨)

写在前面 本人有加速器,无加速器请移步别处。 本人希望这篇可以让一个小白(比如本人)能够顺利的完成openwrt的编译。如有问题请大家指正。 本文参考文献: https://blog.csdn.net/qq_33195791/article/details/138462502 https://…

信息打点web篇----企业宏观资产打点

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 专栏描述:因为第一遍过信息收集的时候,没怎么把收集做回事 导致后来在实战中,遭遇资产获取少,可渗透点少的痛苦,如今决定 从头来过,全面全方位…

灰度图像直方图均衡化

文章目录 1.实验目的2.需求3.代码4.实验结果 1.实验目的 了解一种最基本的图像增强技术,本质上是对灰度图像进行灰度变换。 2.需求 对给定图像进行灰度直方图展示,然后均衡化后再次展示 3.代码 import cv2 as cv import numpy as np from matplotli…

springMVC的bug

写SpringMVC时,配置视图解析器路径中少写了个“/”导致url拼接错误,无法返回视图

6.19 作业

QT实现TCP服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer>//服务器类 #include<QMessageBox>//消息对话框类 #include<QTcpSocket>//客户端的类 #include<QList>//链表容器类QT_BEGIN_NAMESPACE nam…

Ubuntu22.04系统安装及配置

文章目录 一、选择“安装” 二、选择“语言” 三、安装器更新 四、键盘布局 五、选择安装类型 六、网络配置 七、代理设置 八、镜像地址 九、磁盘划分 十、设置用户名、主机名、登录密码 十一、升级到Ubuntu Pro 十二、SSH设置 十三、选装软件包 十四、开始安装进…

数据质量管理-规范性管理

数据质量管理简介 数据质量管理是一个持续性的管理动作&#xff0c;有些人在做数据质量管理的时候会陷入一步到位的误区&#xff0c;想要通过一个工具、平台&#xff0c;或者一套质检规则就完成整体的数据质量管理&#xff0c;而实际数据质量管理从数据接入的那一刻就需要介入…

电动汽车电池是如何制造的

锂离子电池如何工作&#xff1f; 锂离子电池的工作原理是电化学反应&#xff0c;电子在两个电极之间转移&#xff0c;其中一个带负电&#xff0c;另一个带正电。电极浸入导电电解质中&#xff0c;促进带电离子在电极之间移动。 锂离子电池充电 锂离子电池具有插层化合物&…

day13 二叉树的遍历

一、二叉树的递归遍历 题目链接&#xff1a; 144.二叉树的前序遍历(opens new window)145.二叉树的后序遍历(opens new window)94.二叉树的中序遍历 文章讲解&#xff1a;https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E…

WSL2 无法将磁盘”C:\Program Files\WSL\system.vhd“ 附加到WSL2 系统找不到指定的文件

WSL2 无法将磁盘”C:\Program Files\WSL\system.vhd“ 附加到WSL2 系统找不到指定的文件 开局就是雷蹦开局就是雷蹦 早上上班,一开机直接崩溃了,这啥问题,这个文件我哪里敢删除不是。肯定不是我的问题,我不看。心里默默告诉自己,一切都是状态机。确定了一下,首先确实存在…

Vue + SpringBoot 实现文件的断点上传、秒传,存储到Minio

一、前端 1. 计算文件的md5值 前端页面使用的elment-plus的el-upload组件。 <el-upload action"#" :multiple"true" :auto-upload"false" :on-change"handleChange" :show-file-list"false"><FileButton content&…

【链表专题】深入探索链表:文章索引与知识架构(链表的概念、实现、应用、经典例题大合集)

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 目录 一、引言 二、链表的基础概念 &#x1f343;链表的概念 &#x1f343;顺序表和链表的对…

CPN IDE实现分层效果

Shift键鼠标选中要分层的库所和变迁&#xff01;然后create subpage。 Subpage是这样的&#xff0c;不会像CPN tools里面自动生成IN和OUT库所&#xff0c;但是也能正确运行。 虽然父页面在运行中有标红&#xff1a;"port not defined" 错误通常意味着在模型中有一些连…

debug调试高级功能 断点、布局 及Android Studio常用快捷按键使用详情

文章目录 debug断点篇&#xff1a;打临时断点&#xff08;只用一次&#xff09;&#xff1a;alt断点条件断点&#xff1a;在断点上&#xff0c;点击右键&#xff0c;在Condition那里&#xff0c;设置我们需要的值&#xff0c;循环就会自动停到我们设置的那个值那里依赖断点&…

48-2 内网渗透 - 利用Metasploit提权

一、Metasploit提权过程概述 Metasploit是一个开源的安全漏洞检测工具,广泛用于安全和IT专业人士识别、验证和利用安全漏洞,同时也支持专家驱动的安全评估和管理。 提权过程详解 1)生成后门 在Kali Linux上使用msfvenom生成反向连接的后门文件。 # ip 要改成自…

Ceph入门到精通-对象存储的冷热分离实现方法,该如何配置

实现对象存储的冷热分离的基本方法,包括桶创建、冷热池子创建、生命周期配置以及回收设置的步骤概述: 一、桶创建 使用AWS CLI创建S3存储桶,可以通过指定LocationConstraint参数来创建存储桶,并使用--endpoint-url指向RADOS Gateway的地址。 aws s3api create-bucket --…