【云原生】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 renewedDone 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.mzph.cn/bicheng/32972.shtml

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

相关文章

消息认证码解析

1. 什么是消息认证码 消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC。 消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据&#x…

[分布式网络通讯框架]----ZooKeeper下载以及Linux环境下安装与单机模式部署(附带每一步截图)

首先进入apache官网 点击中间的see all Projects->Project List菜单项进入页面 找到zookeeper,进入 在Zookeeper主页的顶部点击菜单Project->Releases,进入Zookeeper发布版本信息页面,如下图: 找到需要下载的版本 …

【vite】define 全局常量定义

&#x1f9ed; define 说明 类型&#xff1a; Record<string, any> 定义全局常量替换方式。其中每项在开发环境下会被定义在全局&#xff0c;而在构建时被静态替换。 Vite 使用 esbuild define 来进行替换&#xff0c;因此值的表达式必须是一个包含 JSON 可序列化值&a…

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

【面试干货】Java中的四种引用类型&#xff1a;强引用、软引用、弱引用和虚引用 1、强引用&#xff08;Strong Reference&#xff09;2、软引用&#xff08;Soft Reference&#xff09;3、弱引用&#xff08;Weak Reference&#xff09;4、虚引用&#xff08;Phantom Reference…

外部网络如何访问内网?

在现代信息化时代&#xff0c;随着企业规模的扩大和业务范围的扩展&#xff0c;越来越多的企业需要实现外部网络访问内网的需求。外部网络访问内网指的是在外部网络环境下&#xff0c;通过互联网等公共网络途径&#xff0c;实现对企业内部网络的访问和操作。这种需求的出现&…

【LinuxC语言】深入理解IP地址与端口号

文章目录 前言端口号IP地址IP地址的分类主机地址与网络地址多播是什么子网掩码特殊的地址与私有的地址总结前言 在计算机网络中,IP 地址和端口号是两个非常重要的概念。IP 地址用于标识网络上的设备,而端口号则用于在同一设备上区分不同的服务或应用。在 Linux C 语言编程中…

obsidian中用check list 打造待办清单

背景 在快节奏的现代生活中&#xff0c;有效管理个人时间和任务成为提升生活与工作效率的关键。 Obsidian&#xff0c;作为一款强大的知识管理和笔记应用&#xff0c;通过其丰富的插件生态&#xff0c;为我们提供了高度自定义的任务管理解决方案。本文旨在详细介绍如何在Obsid…

基于C# .NET 的数字图像处理系统开发

嗨&#xff0c;我是射手座的程序媛&#xff0c;期待和大家更多的交流与学习&#xff0c;欢迎添加3512724768。 《面向对象程序设计》-基于C# .NET 的数字图像处理系统开发 &#xff08;一&#xff09;实习的目的 根据《面向对象程序设计》理论课授课内容&#xff0c;是使学生…

Java项目:基于SSM框架实现的助学贷款管理系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的助学贷款管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

python学习笔记-09

面向对象编程-中 面向对象三大特征&#xff1a;封装、继承、多态。 封装&#xff1a;把内容封装起来便于后面的使用。对于封装来讲&#xff0c;就是使用__init__方法将内容封装道对象中&#xff0c;然后通过对象直接或者self获取被封装的内容。 继承&#xff1a;子继承父的属…

Uniapp在屏幕尺寸低于960出现样式错乱(开箱即用)

我司项目突然要做平板兼容,我在调试的时候发现当屏幕尺寸低于960px发现样式但凡是以rpx单位的全部失效&#xff0c;如果是以px为单位那么影响就比较小&#xff0c;当时解决方案是写了不少媒体查询和把单位rpx改成px&#xff0c;后面查阅文档发现大错特错宽屏适配只需一行代码即…

04--MySQL8.0_JDBC

第一章 JDBC概述 之前我们学习了JavaSE,编写了Java程序,数据保存在变量、数组、集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系; 后来我们学习了数据库管理软件MySQL,可以方便的管理数据1。 那么如何将它俩结合起来呢?即…

《AI旋律:创意产业的重塑与共生》

AI乐章&#xff1a;技术革命下的创意产业新生态 在数字化浪潮的推动下&#xff0c;音乐创作领域迎来了前所未有的变革——AI音乐大模型的横空出世&#xff0c;犹如一颗石子投入平静的湖面&#xff0c;激起了层层涟漪。这些模型以令人难以置信的速度和多样性&#xff0c;将音乐…

【树形dp 换根法 BFS】2581. 统计可能的树根数目

本文涉及知识点 CBFS算法 动态规划汇总 图论知识汇总 树形dp 换根法 BFS LeetCode 2581. 统计可能的树根数目 Alice 有一棵 n 个节点的树&#xff0c;节点编号为 0 到 n - 1 。树用一个长度为 n - 1 的二维整数数组 edges 表示&#xff0c;其中 edges[i] [ai, bi] &#xf…

《书生·浦语大模型实战营》第5课 学习笔记:LMDeploy 量化部署 LLM 实践

文章大纲 0.背景知识与简介计算机组成原理&#xff1a;变量的存储参数量与推理的关系 1.LMDeploy环境部署1.1 创建开发机1.2 创建conda环境InternStudio开发机创建conda环境&#xff08;推荐&#xff09;本地环境创建conda环境 1.3 安装LMDeploy 2.LMDeploy模型对话(chat)2.1 H…

【CSS in Depth2精译】1.2 继承~1.3 特殊值

文章目录 1.2 继承1.3 特殊值1.3.1 inherit 关键字1.3.2 initial 关键字1.3.3 unset 关键字1.3.4 revert 关键字 1.2 继承 除了层叠&#xff0c;还有一种给元素设置样式的方式&#xff1a;继承。经常有人把层叠与继承的概念弄混淆。它们虽然有关联&#xff0c;但也应该分辨清楚…

创新实训(十二) 项目开发——历史对话增加查询功能

必要性 随着对话记录的增加&#xff0c;根据对话名称conv_name查询对话对用户来说非常有必要实现。 实现 原来的history_chats.vue中使用了getChatList() 在onMounted时直接获取用户的所有对话记录&#xff0c;如果要实现查询功能&#xff0c;需要增加两个变量&#xff1a; …

【STM32入门学习】基于DHT20温湿度传感器数据采集和显示

目录 一、软件I2C和硬件I2C 1.1硬件I2C 1.2软件I2C 二、创建工程&#xff08;基于HAL库&#xff09; 三、实物连线 3.1DHT20 3.2串口传输&#xff1a; 四、结果演示 4.1部署文件 4.2主要代码分析 五、心得体会 一、软件I2C和硬件I2C I2C 基本读写过程: 其中S表示由主…

Android Basis - Google Keybox

什么是Keybox Android O 开始谷歌要求每台机器预制谷歌提供的 Attestion Key的需求&#xff0c;该需求要求,每台机器都预制谷歌提供的 key&#xff0c;因此需要 oem 厂商在工厂完成预制。没有预制该key 将直接导致机器 cts 相关测试项失败。Google attestation key的集合又称作…