在不能升级版本的情况下,解决k8s证书到期且续约只有1年的问题

本文主要是介绍在不能升级版本的情况下,解决k8s证书到期且续约只有1年的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

更新证书需要重启服务才能生效(证书已经过期和还未过期都要重启才能生效),重启会对业务产生影响,请申请时间窗口进行处理

注意该工具只适用于k8s版本v1.18.5、请按照服务器架构选择对应的版本

相关说明:

证书到期后 kube-scheduler 和 kube-controoler-manager 会出现异常,原先已经运行的Pod还能工作,当Pod出现异常重启或是被删除后无法自动重建。证书更新后需要重启 master 的 静态 Pods。因为动态证书重载目前还不被所有组件和证书支持,所有这项操作是必须的。 静态 Pods 是被本地 kubelet 而不是 API Server 管理, 所以 kubectl 不能用来删除或重启他们。

证书更新需要在所有k8s节点操作,使用定制的 kubeadm 工具更新证书,请按照以下步骤执行:

1.下载定制的 kubeadm 二进制文件,并上传到服务器,下载链接如下:

2.master节点执行如下命令,查看 k8s 组件证书有效期,RESIDUAL TIME 为 “invalid” 则表示已过期,如果没过期也可以提前续约;

kubeadm alpha certs check-expiration

3.对证书和配置进行备份,所有节点需要操作;

cp -a /etc/kubernetes /etc/kubernetes.bak

master节点再备份config配置

cp /root/.kube/config /root/.kube/config.bak

4.使用定制的 kubeadm 进行续约操作,所有master节点需要操作;

chmod u+x kubeadm-10y./kubeadm-10y alpha certs renew all

5.执行以下命令,所有master节点使用更新后的 admin.conf 替换 /root/.kube/config 文件,出现提示时,输入 y 后回车;

cp -i /etc/kubernetes/admin.conf $HOME/.kube/configy

6.master节点执行以下命令,查看 k8s 组件证书更新情况,RESIDUAL TIME 为 <数字>y 则标识证书已更新,且有效期10年;

kubeadm alpha certs check-expiration

7.master节点使用 kubectl 命令,检查输出是否正常

kubectl get pod -Akubectl get node

8.所有master节点载入基础镜像防止部分节点缺少基础镜像

docker load -i /usr/share/proton-cs/images.tar

9.重启服务使得所有组件能使用新证书进行工作,master节点逐台运行以下命令,以降低重启的影响:

docker restart `docker ps | grep -E 'kube-apiserver|kube-scheduler|kube-controller|etcd|apigateway' | grep kube-system | grep -v 'anyrobot\|calico' | awk '{print $1}' | xargs` &>/dev/nullsystemctl restart kubelet

10. 服务启动后还需检查kubelet 轮换证书是否已经过期,如果已经过期,需要参照 KB-3125 进行处理,检查方法如下,每个k8s节点执行命令:

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

Not Before 指证书有效开始时间,Not After 指证书有效截至时间,如果 Not After 小于当前时间,说明证书已经过期,且没有自动轮换,需要手动干预解决

比如,当前时间是2024年1月16日,Not After 为 2023年5月6日,说明已经过期,需要参照 KB-3125 进行处理

这篇关于在不能升级版本的情况下,解决k8s证书到期且续约只有1年的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/916688

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”