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

目录

引言

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

二、解决方案

(一)查看证书剩余时间

(二)备份重要数据

(三)更新证书

(四)重启相关组件的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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IPFoxy代理IP:IPv4与IPv6性能与安全性对比

在使用IPFoxy静态代理IP的过程中,经常有小白朋友疑惑,IPv4与IPv6有何区别?他们在性能与安全上的差别如何,又该如何选择?在这篇博文中,我们将从各个方面为您科普这一区别,帮助您更好的选择。 一、…

[Linux] vi编辑器

命令模式&文本模式 命令模式就输入命令然后执行,文本模式就是系统把你的输入都当成写进文件里的字符 切换模式: 刚进入默认是命令模式,按: i I a A o O 进入文本模式, 通过他们进入文本模式有什么不同? 然后按esc进…

一个新的剪辑拼接图片和视频类APP在测试阶段需要测试内容,以iPhone APP为例:

1.UI参照原型图和设计稿 如有改动,需及时沟通 2.iPad转屏、不同iPhone和iPad机型测试 3.黑夜白天模式 2.各功能模块流程需要测试跑通 3.订阅支付模块 a. UI设计是否和设计稿一致 b.涉及订阅的位置都要测试 c.免费试用是否显示;试用结束后&#xff0c…

【论文阅读】-- MIRIA:用于时空交互数据原位可视化和分析的混合现实工具包

MIRIA: A Mixed Reality Toolkit for the In-Situ Visualization and Analysis of Spatio-Temporal Interaction Data 摘要1 引言2 背景及相关工作2.1 用户交互和运动数据分析2.2 沉浸式分析 3 时空用户交互分析3.1 现有系统的用例和分析3.2 要求 4 MIRIA 工具包4.1 一般概念4.…

人工智能—美国加利福尼亚州房价预测实战

引言 在当今快速发展的房地产市场中,房价预测已成为一个至关重要的领域。它不仅关系到投资者的决策,也直接影响到普通购房者的生活质量。特别是在美国加利福尼亚州,这个以其高房价和房地产市场的波动性而闻名的地方,准确的房价预…

React@16.x(34)动画(中)

目录 3,SwitchTransition3.1,原理3.1.2,key3.1.2,mode 3.2,举例3.3,结合 animate.css 4,TransitionGroup4.1,其他属性4.1.2,appear4.1.2,component4.1.3&…

JWT整合Gateway实现鉴权(RSA与公私密钥工具类)

一.业务流程 1.使用RSA生成公钥和私钥。私钥保存在授权中心,公钥保存在网关(gateway)和各个信任微服务中。 2.用户请求登录。 3.授权中心进行校验,通过后使用私钥对JWT进行签名加密。并将JWT返回给用户 4.用户携带JWT访问 5.gateway直接通过公钥解密JWT进…

深圳中小企业融资攻略,贷款方法大盘点!

中小企业融资这事,可不是一个简单的事情。资金对中小企业来说,就像血液对人体一样重要。企业发展离不开资金支持,特别是在今年这个环境下,政策对中小企业还挺友好的。今天讲解一下中小微企业常用的几种贷款方法。希望能让大家更明…

MySQL之复制(五)

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

Java面试八股之myBatis中#{}和${}标识的区别是什么

myBatis中#{}和${}标识的区别是什么 MyBatis中的#{}和${}都是用来动态地向SQL语句中插入参数的,但它们之间存在几个关键的区别: 预编译与字符串替换: #{}是预编译处理的参数占位符。MyBatis会将#{}中的内容替换为一个预编译语句的参数标记…

[Linux] 其他命令

cat cat是用法极多的一个命令: 1.输入输出 如果不加任何修饰,只一个cat,它是: 标准输入设备(键盘)——》标准输出设备(显示器) 显示文件内容: cat filename 输入重定向&a…

在金仓数据库中导入sql文件,解决中文数据乱码问题

先确定数据库服务端编码方式是UTF8,如果不是,那就先解决这个问题。操作:当连接数据库之后,执行show server_encoding 用Notepad打开,目的:确定文件编码是UTF-8格式 在sql文件前面加上set NAMES utf8; …

为什么要进行数据库设计?

本文介绍数据库设计的定义、知识要求和设计的内容。 01、数据库设计的定义和知识要求 数据库设计是指对于一个给定的应用环境,根据用户的需求,在某一具体的数据库管理系统上,构造一个性能良好的数据模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的信…

【宠粉赠书】科技图表绘制:R语言数据可视化

为了回馈粉丝们的厚爱,今天小智给大家送上一套科研绘图的必备书籍——《R语言数据可视化:科技图表绘制》。下面我会详细给大家介绍这套图书,文末留有领取方式。 图书介绍 《R语言数据可视化:科技图表绘制》结合编者多年的数据分析…

TVS的原理及选型

目录 案例描述 TVS管的功能与作用: TVS选型注意事项: 高速TVS管选型 最近项目中遇到TVS管选型错误的问题。在此对TVS的功能及选型做一个分享。 案例描述 项目中保护指标应为4-14V,而选型的TVS管位SMJ40CA,其保护电压为40V未…

全新防关联技术出炉:亚马逊测评环境优化,下单成功率大提升

在竞争激烈的测评行业中,构建一个稳定且高效的环境系统成为了制胜的关键。然而,市场上现有的环境方案如虚拟机、模拟机、GCS、云手机、VPS等不仅成本高昂,而且面临着在风控严格的平台上如亚马逊难以逃脱检测的挑战,进而影响了测评…

从视频创意到传播策略 | 医药产品TVC新媒体传播方案

作为营销策划人,你一定在寻找能够激发创意灵感、拓展策划视野的实战案例。这份最新传播方案由Unithought精心打造,不仅是一份详尽的策划指南,更是一次深入患者心灵的品牌传播实践。 何策网,每日收录全网方案PPT ! 方…

WDC西部数据闪存业务救赎之路,会成功吗?

一、序言 在存储界的江湖里,WDC就像是一位手握两大秘籍(闪迪和铠侠NAND工厂)的武林高手,本以为能在企业级SSD的擂台上大展身手,结果却发现自己更像是被误邀参加学霸聚会的学渣,心里那个苦啊,只…

git 拉下来的项目,出现“加载失败”的解决方法

现象: 1、对加载失败的项目,尝试重新加载 解决思路:根据上面的提示,打开F盘对应的 .vcxproj文件,查看里面关于opencv454.props的内容 先删了,后面再补 2、当前的工作重点是消除加载失败的情况,…

JAVA每日作业day6.19

ok了家人们今天继续学习面向对象,话不多说看看今天学了什么 一.面向对象-封装 1,private private:私有的 权限修饰符 是一个成员修饰符,修饰成员变量 被private修饰的成员变量和成员方法只能在本类中使用 对外访问使用是 set XXX 和 get X…