kubeadm初始化的k8s集群证书续期—— 筑梦之路

news2025/2/25 0:09:24

脚本自动化方式

这个是一个开源的项目:https://gitee.com/ximy/update-kube-cert

该项目可以自动化更新k8s集群的证书,使用也很简单。

该脚本可将 kubeadm 生成的证书有效期更新为 10 年。

git clone https://github.com/yuyicai/update-kube-cert.git
cd update-kube-cert
chmod 755 update-kubeadm-cert.sh

如果使用 containerd 作为 CRI 运行时:

  • 使用 update-kubeadm-cert-crictl.sh 代替 update-kubeadm-cert.sh
  • 手动重启控制平面 Pods(必须)

    执行完此命令之后你需要重启控制面 Pods。因为动态证书重载目前还不被所有组件和证书支持,所有这项操作是必须的。 静态 Pods 是被本地 kubelet 而不是 API Server 管理, 所以 kubectl 不能用来删除或重启他们。 要重启静态 Pod 你可以临时将清单文件从 /etc/kubernetes/manifests/ 移除并等待 20 秒 (参考 KubeletConfiguration 结构 中的 fileCheckFrequency 值)。 如果 Pod 不在清单目录里,kubelet 将会终止它。 在另一个 fileCheckFrequency 周期之后你可以将文件移回去,为了组件可以完成 kubelet 将重新创建 Pod 和证书更新。
    https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#manual-certificate-renewal

执行时请使用 ./update-kubeadm-cert.sh all 或者 bash update-kubeadm-cert.sh all ,不要使用 sh update-kubeadm-cert.sh all,因为某些 Linux 发行版 sh 并不是链接到 bash,可能会不兼容。

如果有多个 master 节点,在每个 master 节点都执行一次

./update-kubeadm-cert.sh all

将更新以下证书和 kubeconfig 配置文件

/etc/kubernetes
├── admin.conf
├── controller-manager.conf
├── scheduler.conf
├── kubelet.conf
└── pki
    ├── apiserver.crt
    ├── apiserver-etcd-client.crt
    ├── apiserver-kubelet-client.crt
    ├── front-proxy-client.crt
    └── etcd
        ├── healthcheck-client.crt
        ├── peer.crt
        └── server.crt

更多详情请阅读gitee上的内容。

修改kubeadm源码重新编译方式 

1.  搭建编译环境

# wget  https://studygolang.com/dl/golang/go1.15.5.linux-amd64.tar.gz
# tar -zxvf go1.15.5.linux-amd64.tar.gz -C /usr/local
# vi /etc/profile
# export PATH=$PATH:/usr/local/go/bin
# source /etc/profile

2. 下载源码

# cd /data && git clone https://github.com/kubernetes/kubernetes.git
# git checkout -b remotes/origin/release-1.18 v1.18

3. 修改源码

# 1.14 版本之前

# vim staging/src/k8s.io/client-go/util/cert/cert.go # kubeadm 

 # kubeadm 1.14之后

# vim cmd/kubeadm/app/util/pkiutil/pki_helpers.go 

  • const effectyear = time.Hour * 24 * 365 * 100   有效期100 年 

  • NotAfter:  time.Now().Add(effectyear).UTC()

  • # make WHAT=cmd/kubeadm GOFLAGS=-v  

  • 将更新后的kubeadm拷贝到指定位置 

  • cp -a _output/bin/kubeadm /root/kubeadm-new

 

4. 更新证书

将 kubeadm 进行替换

cp /usr/bin/kubeadm /usr/bin/kubeadm.old

cp /root/kubeadm-new /usr/bin/kubeadm
chmod a+x /usr/bin/kubeadm

5. 更新证书到各个节点

cp -r /etc/kubernetes/pki /etc/kubernetes/pki.old
cd /etc/kubernetes/pki
kubeadm config view > /tmp/cluster.yaml
kubeadm alpha certs renew all --config=/tmp/cluster.yaml

for i in $(ls *.crt); do echo "===== $i ====="; openssl x509 -in $i -text -noout | grep -A3 'Validity' ; done

上面介绍了两种更新kubeadm方式安装k8s集群的证书。

 

 

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

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

相关文章

使用logger.error(“自定义错误信息描述“,e)将错误信息输出到日志文件上

之前一直用e.getMessage()来获取错误信息 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ClassF…

css步骤条

html 代码以及样式 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>css步骤条</title><style>.steps {display: flex;justify-content: space-between;padding: 0;margin: 20px 10px;l…

【2021研电赛】基于动态无线充电技术的自动驾驶小车

本作品介绍参与极术社区的有奖征集|分享研电赛作品扩大影响力&#xff0c;更有重磅电子产品免费领取! 参赛单位&#xff1a;北京交通大学 作品简介 近年来&#xff0c;电动汽车的发展得到了很多国家和车企的大力支持&#xff0c;但其仍然存在充电时间长、充电设施不齐全等问…

酷开科技 | 酷开系统沉浸式大屏游戏更解压!

随着家庭娱乐需求日益旺盛&#xff0c;越来越多的家庭消费者和游戏玩家开始追求大屏游戏带来的沉浸感。玩家在玩游戏的时候用大屏能获得更广阔的视野和更出色的视觉包围感&#xff0c;因此用大屏玩游戏已经成为了一种潮流。用酷开系统玩大屏游戏&#xff0c;过瘾又刺激&#xf…

迷你洗衣机哪个牌子好又实惠?小型洗衣机全自动

现在洗内衣内裤也是一件较麻烦的事情了&#xff0c;在清洗过程中还要用热水杀菌&#xff0c;还要确保洗衣液是否有冲洗干净&#xff0c;还要防止细菌的滋生等等&#xff0c;所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的&#xff0c;专门的内衣洗衣机可以最大程度减少…

【HarmonyOS】元服务卡片router实现跳转到指定页面并传动态参数

【关键字】 元服务卡片、router跳转不同页面、传递动态参数 【写在前面】 本篇文章主要介绍开发元服务卡片时&#xff0c;如何实现从卡片中点击事件跳转到指定的应用内页面&#xff0c;并传递参数接受参数功能。此处以JS UI开发服务卡片为例&#xff0c;JS卡片支持组件设置ac…

洗车小程序源码:10个必备功能,提升洗车体验

作为洗车行业的专家&#xff0c;我们深知在如今数字化时代&#xff0c;拥有一款功能强大的洗车小程序是提升用户体验和业务发展的关键。本文将向您介绍洗车小程序源码中的10个必备功能&#xff0c;让您的洗车业务达到新的高度。 在线预约系统 通过洗车小程序源码&#xff0c;…

【Docker】Docker数据的存储

默认情况下&#xff0c;在运行中的容器里创建的文件&#xff0c;被保存在一个可写的容器层里&#xff0c;如果容器被删除了&#xff0c;则对应的数据也随之删除了。 这个可写的容器层是和特定的容器绑定的&#xff0c;也就是这些数据无法方便的和其它容器共享。 Docker主要提…

Mybatis-Plus CRUD

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Mybatis-Plus CRUD 通用 Service CRUD 封装 IService 接口&#xff0c;进一步封装 CRUD 采用 get 查询、remove 删除 、list 查询集合、page 分页的前缀命名方式区分 …

【Flutter 问题系列第 79 篇】在 Flutter 中使用 ReorderableListView 实现拖拽排序列表组件的功能

这是【Flutter 问题系列第 79 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 当前开发环境 Flutter 版本&#xff1a;3.10.5&#xff0c;Dart 版本&#xff1a;3.0.5&#xff0c;操作系统&#xff1a;macOS 文章目录 一&#xff1a;效果演示二&#xff1a;Reor…

RK3568驱动指南|第七期-设备树-第59章 实例分析:CPU

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

Redis工具

GitHub - tanhuang2016/RedisDesktopManagerFX: 搞一个简单实用的Redis图形化工具

HDMI线EMI超标整改方案

HDMI端口辐射&#xff08;EMI&#xff09;超标解决方案_hdmi esd器件对 emi的影响-CSDN博客HDMI端口辐射&#xff08;EMI&#xff09;超标解决方案一、HDMI EMC设计要求&#xff1a;1、HDMI EMC设计原理图( 图 一 )2、HDMI元件选型及参数说明&#xff1a;&#xff08;图一所示&…

企业数字化建设有哪些路线可以选择?

企业数字化建设涉及利用数字技术来提高行业的效率、准确性和协作性。在选择企业实施数字化建设的路线时&#xff0c;应该考虑组织的需求和目标的各个方面。可以考虑以下一些路线&#xff1a; 1.项目管理软件&#xff1a;实施项目管理软件&#xff0c;可以更好地规划、调度和跟…

数据库 MySQL总结以及常见命令总结

一、数据库类型 关系型数据库&#xff1a;MYSQL 非关系型数据库&#xff1a;NoSQL、MongoDB、Cassandra、Dynamo 主流关系数据库&#xff1a; 商用数据库&#xff0c;例如&#xff1a;Oracle&#xff0c;SQL Server&#xff0c;DB2等&#xff1b; 开源数据库&#xff0c;例如…

音乐的数字未来:虚拟演唱会与TikTok的巅峰融合

在数字时代&#xff0c;音乐产业正在经历着革命性的变革。虚拟演唱会与TikTok的融合正引领着音乐的数字未来&#xff0c;为艺术家、粉丝和创作者带来了前所未有的互动性和娱乐体验。本文将深入探讨这一巅峰融合&#xff0c;以揭示音乐产业的新前景。 虚拟演唱会的崛起 虚拟演唱…

【机器学习】支持向量机(实战)

支持向量机&#xff08;实战&#xff09; 目录 一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、线性支持向量机&#xff08;核函数为线性核&#xff09;三、数据标准化的影响四、软间隔五、非线性支持向量机5.1 手动升维5.2 对比试验&#…

MySQL的索引原理

文章目录 什么是索引&#xff1f;索引的工作原理创建和管理索引索引类型最佳实践总结 &#x1f389;欢迎来到数据结构学习专栏~MySQL的索引原理 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a;数据结…

MyBatis篇---第五篇

系列文章目录 文章目录 系列文章目录一、MyBatis 中见过什么设计模式&#xff1f;二、MyBatis 中比如 UserMapper.java 是接口&#xff0c;为什么没有实现类还能调用&#xff1f; 一、MyBatis 中见过什么设计模式&#xff1f; 二、MyBatis 中比如 UserMapper.java 是接口&#…