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

脚本自动化方式

这个是一个开源的项目: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集群的证书。

 

 

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

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

相关文章

Notepad++正则查询替换操作

Notepad编辑器查找功能非常强大,本处记录一些实战中常用到复杂查询替换操作。 注意:如果是重要文件,替换操作前最好备份;当前一个操作后也可以用ctrlz恢复。 查找重复行 用查找(ctrlf)功能,用正则表达式模式匹配。 查…

PyCharm改变代码背景图片的使用教程

一个好的集成环境是学习和使用一门编程语言的重中之重,这次我给大家分享如何改变PyCharm软件的代码背景图片。 说明:本教程使用的是汉化版PyCharm软件。 打开PyCharm软件。 点击软件最上方导航栏的文件,然后找到设置。 打开设置然后点击外观…

【离散数学必刷题】命题逻辑(第一章 左孝凌)刷完包过!

复习16题: 【1】下列哪个语句是真命题() A、今天天气真好! B、我正在说谎。 C、如果7 2 10 ,那么4 6 5。 D、如果7 2 9 , 则 4 6 5。 对于A,只有具有确定真值的陈述句才是命题&#xf…

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

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

C语言每日一题(19)回文素数

牛客网 BC157 回文素数 题目描述 描述 现在给出一个素数,这个素数满足两点: 1、 只由1-9组成,并且每个数只出现一次,如13,23,1289。 2、 位数从高到低为递减或递增,如2459,87631。 请你判断一下&am…

HCIP-MGRE实验

实验拓扑图 需求 1 R5为ISP ,只能进行IP地址配置;其所有地址均配为公有IP地址 2 R1和R5间使用PPP的PAP认证,R5为主认证方; R2于R5之间使用ppp的chap认证,R5为主认证方; R3于R5之间使用HDLC封装。 3 R1/R2/R3构建一个MGRE环境,R1为…

idea 基础设置

1、设置 IDEA 主题 2、自动导包和优化多余的包 3、同一个包下的类,超过指定个数的时候,导包合并为* 4、显示行号 , 方法和方法间的分隔符: 5、忽略大小写,进行提示 6、多个类不隐藏,多行显示 7、设置默认的…

城市正视图(Urban Elevations, ACM/ICPC World Finals 1992, UVa221)rust解法

如图5-4所示,有n(n≤100)个建筑物。左侧是俯视图(左上角为建筑物编号,右下角为高度),右侧是从南向北看的正视图。 输入每个建筑物左下角坐标(即x、y坐标的最小值)、宽度…

(完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类

文章目录 背景输入点直接输入邻接矩阵 背景 网上倒是有一些关于使用sklearn进行谱聚类的教程,但是这些教程的输入都是一些点的集合,然后根据谱聚类的原理,其会每两个点计算一次亲密度(可以认为两个点距离越大,亲密度越…

js双向绑定

题目来源: 双向绑定_牛客题霸_牛客网 (nowcoder.com) JS37 双向绑定 描述 请补全JavaScript代码,要求如下: 1. 监听对象属性的变化 2. 当"person"对象属性发生变化时,页面中与该属性相关的数据同步更新 3. 将输入框中…

ETL实现实时文件监听

一、实时文件监听的作用及应用场景 实时文件监听是一种监测指定目录下的文件变化的技术,当产生新文件或者文件被修改时,可实时提醒用户并进行相应处理。这种技术广泛应用于数据备份、日志管理、文件同步和版本控制等场景,它可以帮助用户及时…

Vue3踩坑指南

vue.config.ts不起作用 关于项目 项目使用的还是vue-cli搭建的,底层还是webpack,没有使用新的vite搭建。 踩坑1:vue.config.ts不起作用 我本着既然是vue3 ts的项目,那么为了规范,项目中所有的js文件都得替换成ts文…

牛客网刷题-(4)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

kr第三阶段(二)32 位汇编

编译与链接 环境配置 masm32 masm32 是微软的 masm32 的民间工具集合。该工具集合除了 asm32 本身的汇编器 ml 外还提供了: SDK 对应的函数声明头文件和 lib 库。32 位版本的 link(原版本是 16 位,这里的 32 位版本的 link 来自 VC 6.0&a…

【可视化Java GUI程序设计教程】第4章 布局设计

4.1 布局管理器概述 右击窗体,单击快捷菜单中的Set Layout 4.1.2 绝对布局(Absolute Layout) 缩小窗口发现超出窗口范围的按钮看不见 Absolute Layout 4.1.2 空值布局(Null Layout) 4.1.3 布局管理器的属性和组件布…

【Docker】Docker的网络

Docker提供了多种内置的网络模式,用于在容器之间建立网络连接。这些网络模式,包括桥接网络、主机网络、无网络模式。我们将主要探讨每种网络模式的优缺点、适用场景。 桥接网络 桥接网络是Docker的默认网络模式。在桥接网络中,Docker会为每…

Node编写重置用户密码接口

目录 前言 定义路由和处理函数 验证表单数据 实现重置密码功能 前言 接前面文章,本文介绍如何编写重置用户密码接口 定义路由和处理函数 路由 // 重置密码的路由 router.post(/updatepwd, userinfo_handler.updatePassword) 处理函数 exports.updatePasswo…

网络协议--IGMP:Internet组管理协议

13.1 引言 12.4节概述了IP多播给出,并介绍了D类IP地址到以太网地址的映射方式。也简要说明了在单个物理网络中的多播过程,但当涉及多个网络并且多播数据必须通过路由器转发时,情况会复杂得多。 本章将介绍用于支持主机和路由器进行多播的In…

软件测试工程师怎么样面试上好的公司?

首先卖个关子,如果你是面试官,你希望招一个什么样的人进来? 如果这个问题搞明白了,那么可以说测试岗位的面试,就变得非常轻松了。 按照一般的惯例,面试官都会让你自我介绍,介绍你的项目经验&a…

【JAVA核心知识】深度了解MySql的innodb引擎

关键词InnoDB架构图表空间数据页顺序下数据页的存储页分裂页合并高水位排序索引构建img_v2_455d98d3-a67a-47ef-b15a-c1798de6f56g.jpg 索引优化模糊查询打断最左匹配?-索引下推仅能使用一个索引?-索引合并自适应Hash索引 AUTO_INCREMENT计数器新增语句的…