K8S证书过期解决办法之替换证书

news2024/11/23 18:32:01

目录

1 证书过期的情况

2 Kubernetes环境介绍

3 替换证书步骤

3.1 在master上查看各证书的过期时间

3.2 查看master(192.168.0.190)上kubelet证书列表

3.3  查看master(192.168.0.190)上kubelet证书的过期时间

3.4 查看node1和node2上kubelet证书的过期时间(同(2))

3.5 备份相关证书文件的目录

3.6 轮换master上证书

3.7 再次查看证书过期日期

3.8 查看/etc/kubernetes/pki/证书是否更新了

3.9 移除conf文件

3.10 重新生成kubeconfig文件

3.11 查看是否生成出来了新的配置文件

3.12 重新拷贝管理员所用的新的kubeconfig文件

3.13 重启kube-scheduler

4 轮换kubelet证书

4.1 轮换master上的kubelet证书

4.1.1 在master上查看证书签名请求(简称为CSR)

4.1.2 查看当前kubelet证书的过期时间

 4.2 轮换node上的kubelet证书

4.2.1 生成node1所需要的kubelet.conf文件

4.2.2 切换到node1,重启kubelet 

5 重启集群

6 后遗症


本博客参考

https://blog.csdn.net/Harry_z666/article/details/128015175

已进行了验证,非常感谢原文博主的记录~

另外,我的kubernetes版本为V1.23.4。

请在更新证书前使用命令行删除之前的工作部署容器,以免产生垃圾数据,对测试产生不必要的麻烦。截图上的时间请忽略,注意内容就好,毕竟记录本篇博客的时候我已经按着教程更新完了证书,都是补图或搜索到的状态类似的图。

1 证书过期的情况

使用kubeadm方式安装的kubernetes集群各个组件所使用的证书期限为1年,到期后,证书失效,kubectl命令无法使用,在使用kubectl命令时,报错无法连接到localhost:8080。

2 Kubernetes环境介绍

192.168.0.190为master节点,192.168.0.191、192.168.0.192分别为node1和node2节点。操作系统为linux 4.19.90-25.2.v2101.gfb01.ky10.aarch64

3 替换证书步骤

3.1 在master上查看各证书的过期时间

kubeadm certs check-expiration

3.2 查看master(192.168.0.190)上kubelet证书列表

ls /var/lib/kubelet/pki/

3.3  查看master(192.168.0.190)上kubelet证书的过期时间

openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not

3.4 查看node1和node2上kubelet证书的过期时间(同(2))

3.5 备份相关证书文件的目录

(很重要,养成备份好习惯,证书废掉集群就要重新安装了)

cp -r /etc/kubernetes/ /tmp/backup/ # 静态pods配置以及证书
cp -r /var/lib/kubelet/pki/ /tmp/backup.crr #证书pem存放目录

3.6 轮换master上证书

[root@master kubernetes]#kubeadm certs renew all

 (借的图,因为我的证书已经更新完了,更新结束才进行的记录)

3.7 再次查看证书过期日期

[root@master kubernetes]#kubeadm certs check-expiration

3.8 查看/etc/kubernetes/pki/证书是否更新了

[root@master kubernetes]#ll -a /etc/kubernetes/pki/

当前kubernetes各组件所使用的kubeconfig在/etc/kubernetes/里: 

[root@master kubernetes]#ll -a /etc/kubernetes/

3.9 移除conf文件

[root@master kubernetes]#rm -rf /etc/kubernetes/*.conf
[root@master kubernetes]#ls

3.10 重新生成kubeconfig文件

#注意版本号
[root@master kubernetes]#kubeadm init --kubernetes-version=v1.23.4 phase kubeconfig all

3.11 查看是否生成出来了新的配置文件

[root@master kubernetes]# ll -a /etc/kubernetes/

所需要的kubeconfig文件,就是上面的kubelet.conf。

3.12 重新拷贝管理员所用的新的kubeconfig文件

#备份下/root/.kube/config 文件:
cp /root/.kube/config /tmp/kube.old/config
#替换:
[root@master kubernetes]# cp /etc/kubernetes/admin.conf ~/.kube/config

3.13 重启kube-scheduler

[root@master kubernetes]# docker ps -a | grep kube-scheduler | awk ‘{print $1}’
[root@master kubernetes]# docker rm -f 上述容器

#等待kube-scheduler彻底启动起来,即状态为1/1。
[root@master kubernetes]# kubectl get pods -n kube-system | grep scheduler

4 轮换kubelet证书

4.1 轮换master上的kubelet证书

#查看kubelet当前所使用的证书
[root@master kubernetes]# ll -a /var/lib/kubelet/pki/


#通过kubeadm certs renew all更新的 k8s 证数,是不会更新 kubelet.conf 的证书的。
#所以此处的证书重启kubelet cho重新生成。
#因为前面已经重新生成了kubelet.conf,现在重启kubelet。
[root@master kubernetes]# systemctl restart kubelet


[root@master kubernetes]# ll -a /var/lib/kubelet/pki/

4.1.1 在master上查看证书签名请求(简称为CSR)

[root@master kubernetes]# kubectl get csr

#我的报的是“No Resource Found”,目前看来是不影响使用的,看其他人的是有信息的,不清楚具体原因。


[root@master kubernetes]# kubectl certificate approve csr-vg9bd
certificatesigningrequest.certificates.k8s.io/csr-vg9bd approved(未操作该步骤)

4.1.2 查看当前kubelet证书的过期时间

[root@master kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not


#PS:未过期的话应该是可以不处理的,我当时查看kubelet的证书时间还没过期,所以没有操作证书替换

 4.2 轮换node上的kubelet证书

4.2.1 生成node1所需要的kubelet.conf文件

#在master上生成worker所需要的kubelet.conf临时放在/tmp下
[root@master tmp]# mkdir -p /tmp/worker

#生成node1所需要的kubelet.conf文件。注意更改成自己的信息
[root@master worker]# kubeadm init --kubernetes-version=v1.23.4 phase kubeconfig kubelet --node-name node1 --kubeconfig-dir /tmp/worker/
#[kubeconfig] Writing “kubelet.conf” kubeconfig file

#node1(192.168.0.191)上的/etc/kubernetes/目录里覆盖原来的kubelet.conf。先备份原先node1的kubelet.conf文件:
[root@node1 kubernetes]# mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubeletconf.bak

[root@master worker]# scp /tmp/worker/kubelet.conf root@192.168.0.191:/etc/kubernetes/

4.2.2 切换到node1,重启kubelet 

[root@node1 kubernetes]# systemctl restart kubelet


#再次查看证书
[root@node1 kubernetes]# ll -a /var/lib/kubelet/pki/


#查看kubelet证书的过期时间。
[root@node1 kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not


#切换到master(192.168.0.190)上,查看CSR。(未操作)
[root@master worker]# kubectl get csr

其他节点同上操作。

5 重启集群

reboot

修改配置之后记得重启就行,大部分时候重启能解决很多问题~~

6 后遗症

如果容器不能自动调度,在节点少的情况下尝试手动分配各节点,之后就可以进行调度了,具体原因还不太清楚。

如果更新证书后还有之前的任务容器,看着像在运行,实际没有工作,可以用命令行删除该容器,或在k8s里清理掉名称空间,防止垃圾数据造成容器无法重新启动。

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

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

相关文章

在openSUSE-Leap-15.5-DVD-x86_64的gnome下使用远程桌面tigervnc

在openSUSE-Leap-15.5-DVD-x86_64的gnome下使用远程桌面tigervnc 在openSUSE-Leap-15.5-DVD-x86_64的tigervnc-1.12.0软件设计有变动了,变为一开机就启动远程桌面服务,没有vncserver取而代之是Xvnc,也在自己之前写的一篇博文的基础上作了修改…

vue跨域实现:proxy配置

一、什么是跨域 要了解跨域,首先得知道浏览器的同源策略。 同源策略:是由Netscape提出的一个安全策略,能够阻挡恶意文档,保护本地数据。它能限制一个源的文档或脚本对另一个源的交互,使得其它源的文档或脚本&#xf…

来看一个RuoYi-Cloud-Plus的Bug_今天突然发现的---RuoYi-Cloud-Plus-master工作笔记0002

用的时候可以注意一些,今天发现一个问题: 是关于角色管理这里的,如果你用的不是超级管理员登录,超级管理员他这里指定了ID是1, 如果你用其他,也是管理员账号,比如用超级管理员创建了一个管理员的角色,并且分配了,角色管理给这个管理员,那么,这个时候,你在给这个分配了角色管理…

CSAPP - LinkLab实验(阶段1-5)

LinkLab实验&#xff08;阶段1-5&#xff09; 官网&#xff1a;http://csapp.cs.cmu.edu/3e/labs.html 实验内容 每个实验阶段&#xff08;共5个&#xff09;考察ELF文件组成与程序链接过程的不同方面知识 阶段1&#xff1a;全局变量 <-> 数据节 阶段2&#xff1a;强符…

丝滑!软件开发根本不需要会编码(看我10分钟应用上线)

目录 一、前言 二、低代码基础功能及搭建 设计组件丰富 连接数据源 工作流设计 三、低代码和敏捷开发如何协同工作&#xff1f; 一、前言 众所周知&#xff0c;开发一个大型的企业级系统&#xff0c;公司往往需要大量的人力做支持后盾&#xff0c;如需要需求分析师、数据库管理…

使用chatgpt过funcaptcha验证码1个人学习记录

funcaptcha 验证码1 记录 funcaptch 有好几种验证码 验证码1 验证码2 验证码3 … 好多好多 今日记录验证码一完成记录&#xff1a; 这种验证码貌似每几天就换动物了 现在发现如下几种 如何解决&#xff1f; 训练模型计算目标位置 下面是我训练的模型计算的结果&…

LeetCode912排序数组(快速排序机及其优化详解)

LeetCode912排序数组&#xff08;快速排序及其优化详解&#xff09; 文章目录 LeetCode912排序数组&#xff08;快速排序及其优化详解&#xff09;Abstract基本快速排序快速排序思路总结以及优化优化思路针对渐进有序数组针对相同元素较多的数组 Code参考文献 Abstract 我首先…

【Python 下载,Anaconda下载,环境变量配置,两个python不同版本使用环境变量配置切换】

我再下载Anaconda之前&#xff0c;自己安装了一个Python3.11.配置环境变量之后&#xff0c;查看python版本&#xff1a; 下载好Anaconda3之后&#xff0c;将环境变量提到之前的前面&#xff0c;再使用CMD,查看就是Anaconda自带的Python版本&#xff0c;该版本有就有很多的第三方…

大模型与人类的未来 | 基于认知神经科学的大模型论坛精彩回顾

导读 6 月 10 日&#xff0c;智源大会“基于认知神经科学的大模型论坛”召开&#xff0c;本次论坛邀请到了认知神经、脑科学领域非常有建树的专家&#xff0c;深度讨论大模型的能力与局限性&#xff0c;包括对未来人工智能发展方向的讨论。论坛主席是清华大学脑与智能实验室首席…

全网最牛最全Postman接口测试: postman设置接口关联,postman实现参数化

postman设置接口关联 在实际的接口测试中&#xff0c;后一个接口经常需要用到前一个接口返回的结果&#xff0c; 从而让后一个接口能正常执行&#xff0c;这个过程的实现称为关联。 在postman中实现关联操作的步骤如下&#xff1a; 1、利用postman获取上一个接口指定的返回值…

2023年5月青少年机器人技术等级考试理论综合试卷(五级)

青少年机器人技术等级考试理论综合试卷&#xff08;五级&#xff09; 分数&#xff1a; 100 题数&#xff1a; 30 一、 单选题(共 20 题&#xff0c; 每题 4 分&#xff0c; 共 80 分) 1.ESP32 for Arduino&#xff0c; 下列程序的运行结果是&#xff1f; &#xff08; &#x…

GAMES101笔记 Lecture05 光栅化1(Triangles)

目录 Perspective Projection(透视投影)Canonical Cube to Screen(从标准立方体到屏幕)What is a screen(什么是屏幕)? Rasterization: Drawing to Raster Displays(如何在光栅设备上画东西)Triangles - Fundamental Shape Primitives(三角形-基本形状的基元)Why triangles?&…

node从头到尾实现简单编译器

介绍 本文用node实现了一个简单的编译器mccompiler&#xff0c;主要用于学习&#xff0c;笔者能力和精力有限&#xff0c;如有不当&#xff0c;还请指出 原文地址&#xff1a;原文地址 项目地址&#xff1a;项目地址 本文涉及&#xff1a;编译器的词法分析&#xff0c;抽象语义…

应用程序传递数据给驱动和驱动操作LED灯

目录 1. 应用程序将数据传递给驱动 1.1. 函数分析 1.2. 编写驱动.c文件 1.3. 编写编译驱动的makefile文件 1.4. 执行make命令&#xff0c;并安装驱动&#xff0c;生成设备文件 1.5. 写应用层.c文件 1.6. 执行可执行文件验证 2. 驱动操作LED灯 2.1. 函数分析 2.2. 手册…

【C语言】第一个C语言项目——“猜数字”游戏(内附源码)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello米娜桑&#xff0c;这里是君兮_&#xff0c;今天又抽空为大家更新我们的主线0基础C语言啦&#xff01;鉴于最近讲解了非常多的选择语句与循环语句&#xff0c;咱们今天就来讲讲两者结合的一个简单的实战应用。 同时…

Python Locust全过程使用代码详解

下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 Python locust 是一个基于 Python 的开源负…

MKS SERVO4257D 闭环步进电机_系列9 上位机通讯示例

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&a…

视觉SLAM十四讲——ch13实践(设计SLAM系统)

视觉SLAM十四讲——ch13的实践操作及避坑 1. 实践操作前的准备工作2. 实践过程2.1 运行测试程序2.2 运行00数据集2.3 更改代码画出运动轨迹 3. 遇到的问题及解决办法3.1 cmake ..时出现的问题3.2 make时出现的问题3.3 头文件下红色报错 1. 实践操作前的准备工作 下载Kitti数据…

使用dat.gui更改three.js中的物体变量

一、dat.gui介绍 gui是一种JavaScript库&#xff0c;用于创建可视化控件和调试工具。它是dat.gui的简称。dat.gui是一个用于在Web应用程序中创建可定制GUI的JavaScript库。它可以轻松创建滑块、复选框、颜色选择器等控件&#xff0c;用户可以直接在GUI上进行交互和调整。dat.g…

一起来看看 K-verse LAND 销售活动中的合作伙伴给大家的祝福吧~

K-verse 是 The Sandbox 中的韩国内容主题空间&#xff0c;自去年 12 月首次推出以来&#xff0c;已吸引多家合作伙伴加入。此外&#xff0c;现有的合作伙伴公司和品牌正在积极准备以新的形式展示元宇宙内容。 这里有着许多可能性&#xff0c;K-verse LAND 销售活动是不是让你们…