k8s修改apiserver证书可用年限

使用 kubeadm 部署的 K8S 集群中,apiserver 证书的默认可用年限只有一年。如果直接用在生产环境,当证书过期后会造成 K8S 集群瘫痪,从而影响现网业务。

1,查看 K8S 集群所有证书存放位置

ls /etc/kubernetes/pki/
apiserver.crt              apiserver.key                 ca.crt  front-proxy-ca.crt      front-proxy-client.key
apiserver-etcd-client.crt  apiserver-kubelet-client.crt  ca.key  front-proxy-ca.key      sa.key
apiserver-etcd-client.key  apiserver-kubelet-client.key  etcd    front-proxy-client.crt  sa.pub

2,查看 apiserver 证书信息,默认可用年限只有一年

cd /etc/kubernetes/pki/
openssl x509 -in apiserver.crt -text -noout
Certificate:Data:Version: 3 (0x2)Serial Number: 1295513766016577226 (0x11fa96e8010beeca)Signature Algorithm: sha256WithRSAEncryptionIssuer: CN=kubernetesValidityNot Before: May 27 00:57:34 2021 GMTNot After : May 27 00:57:34 2022 GMT

3,查看 ca 证书信息,默认可用年限为10年

openssl x509 -in ca.crt -text -noout
Certificate:Data:Version: 3 (0x2)Serial Number: 0 (0x0)Signature Algorithm: sha256WithRSAEncryptionIssuer: CN=kubernetesValidityNot Before: May 27 00:57:34 2021 GMTNot After : May 25 00:57:34 2031 GMT

4,修改证书可用年限

1、go 环境部署
登陆 https://studygolang.com/dl ,下载 Linux 版本的 Go 安装包,如:go1.16.5.linux-amd64.tar.gz//上传 go1.12.9.linux-amd64.tar.gz 到 master 节点的 /opt 目录中
tar zxvf go1.12.9.linux-amd64.tar.gz -C /usr/local///设置 go 软件程序的环境变量
echo 'export PATH=/usr/local/go/bin:$PATH' >> /etc/profile
source /etc/profile//查看 go 的版本
go version
go version go1.12.9 linux/amd642、下载源码
mkdir /data
cd /data//克隆代码
#在 master 节点上生成密钥对认证文件
ssh-keygen -t rsa#复制公钥文件内容到github中,用于ssh克隆 https://github.com/settings/keys
cat /root/.ssh/id_rsa.pub#在 master 节点上克隆
git clone git@github.com:kubernetes/kubernetes.git//查看当前版本
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:15:32Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}//切换分支
cd kubernetes/
git checkout -b remotes/origin/release-1.15.1 v1.15.13、修改 Kubeadm 源码包更新证书策略
vim cmd/kubeadm/app/util/pkiutil/pki_helpers.go
......
//NewSignedCert creates a signed certificate using the given CA certificate and key
func NewSignedCert(cfg *certutil.Config,key crypto.Signer,caCert *x509.certificate,caKey crypto.Signcate, error) {const duration10years = time.Hour * 24 * 365 * 10	#定义常量duration10years为10年时间	serial,err := cryptorand.Int(cryptorand.Reader,new(big.Int).SetInt64(math.MaxInt64))if err != nil {return nil, err}if len(cfg. CommonName) == 0 {return nil, errors.New("must specify a CommonName")}if len(cfg.Usages) == 0 {return nil, errors.New("must specify at least one ExtKeyUsage")}certTmpl := x509.Certificate{Subject: pkix.Name{CommonName:cfg. CommonName ,0rganization : cfg.0rganization ,},DNSNames:     cfg.AltNames.DNSNames,IPAddresses:  cfg.AltNames.IPs,SerialNumber: serial,NotBefore:    caCert.NotBefore,NotAfter:     time.Now().Add(duration10years).UTC(),	#修改证书可用年限KeyUsage:     x509.KeyUsageKeyEncipherment │ x509.KeyUsageDigitalSignature,ExtKeyUsage:  cfg.Usages,}
......//编译 kubeadm
make WHAT=cmd/kubeadm GOFLAGS=-v//获取新编译出的kubeadm文件
cp _output/bin/kubeadm /root/kubeadm-new

5,更新kubeadm

//将原 kubeadm 进行备份
cp /usr/bin/kubeadm /usr/bin/kubeadm.old//将 kubeadm 进行替换
cp /root/kubeadm-new /usr/bin/kubeadmchmod +x /usr/bin/kubeadm

6,更新个节点证书到master

//将原证书进行备份
cp -r /etc/kubernetes/pki /etc/kubernetes/pki.old//生成新证书
kubeadm alpha certs renew all --config=/opt/kubeadm-config.yaml//查看 apiserver 证书信息
cd /etc/kubernetes/pki
openssl x509 -in apiserver.crt -text -noout | grep NotHA集群其余 mater 节点证书更新
//将新生成的证书复制到其他 mater 节点上进行更新
#!/bin/bash
masterNode="192.168.80.14 192.168.80.15"
for host in ${masterNode}
doscp /etc/kubernetes/pki/{ca.crt,ca.key,sa.key,sa.pub,front-proxy-ca.crt,front-proxy-ca.key}" root@$host:/etc/kubernetes/pki/scp /etc/kubernetes/pki/etcd/{ca.crt,ca.key} root@$host:/etc/kubernetes/pki/etcd/scp /etc/kubernetes/admin.conf root@$host:/etc/kubernetes/
done

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

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

相关文章

完美的代价

题目: * 题目: * 回文串,是一种特殊的字符串,它从左往右和从右往左读是一样的。 * 现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变为完美的回文回文串。 * 例如:mamad * 第…

微软Azure文本转音频,保存成MP3文件【代码python3】

标签: 文本转音频并保存mp3文件; 微软Azure; 微软Azure可以将文本转音频,并保存mp3文件,直接上代码 代码格式:python 3 import os import azure.cognitiveservices.speech as speechsdk# This example re…

叛乱沙漠风暴server安装 ubuntu 22.04

最新版沙暴已经不支持centos了,还是使用ubuntu比较顺利 官方文档: https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072-Server-Admin-Guide // 安装steamcmd依赖 sudo add-apt-repository multiverse sudo apt inst…

音视频技术开发周刊 | 317

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 MIT惊人再证大语言模型是世界模型!LLM能分清真理和谎言,还能被人类洗脑 MIT等学者的「世界模型」第二弹来了!这次,他们证明…

275. H 指数 II

275. H 指数 II 难度: 中等 来源: 每日一题 2023.10.30 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。 h 指数的定义:h 代表“高…

“探索Linux世界:从CentOS安装到常见命令使用“

目录 引言一、安装CentOS二、Linux的常见命令文件夹和目录操作命令文件编辑命令vi或vim编辑器命令模式编辑模式末行模式 总结 引言 在计算机领域,Linux作为一种强大而灵活的操作系统,在服务器、嵌入式设备和个人电脑等领域广泛应用。本文将引导您了解并…

git cherry-pick命令详细用法

git cherry-pick命令详细用法 1.需求背景2.git cherry-pick介绍3.演示操作4.cherry-pick 支持一次转移多个提交5.代码冲突 1.需求背景 需要在某个稳定版本上,添加一个刚开发完成的版本中的功能。就可以使用 Cherry-pick 命令,将这个功能相关的 commit 提…

unboundlocalerror: local variable ‘××ב referenced before assignment

发现我的代码 if self.flag valid:us self.user_valid_list[idx] elif self.flag test:us self.user_test_list[idx]info sample(us)如果我的flag不是train和valid中的值,那么就会出现问题,因此再加上一个else处理这种情况 if self.flag valid:u…

Linux基础环境开发工具的使用(yum,vim,gcc,g++)

Linux基础环境开发工具的使用[yum,vim,gcc,g] 一.yum1.yum的快速入门1.yum安装软件2.yum卸载软件 2.yum的生态环境1.操作系统的分化2.四个问题1.服务器是谁提供的呢?2.服务器上的软件是谁提供的呢?3.为什么要提供呢?4.yum是如何得知目标服务器的地址和下载链接呢?5.软件源 …

记一次天池参赛总结

第一次参加这类的算法比赛,记录一下自己遇到的一些点,做个总结。 比较浅显的一些记录,第一次的经验之谈,适合首次参加可能容易遇到的问题 文章目录 平台代码tips整理 加载权重文件autopel下载上传 平台 使用的autodl平台 下载大…

基于单片机的空气质量检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、主要内容二、系统方案设计2.1 系统方案设计2.2 主控制器模块选择 三、 系统软件设计4.1 程序结构分析4.2系统程序…

小红书平台用户数据分析与可视化

管理器、网页下载器、网页解析器、输出管理器这四个模块去搭建一个爬虫框架,将爬虫流程统一化,将通用的功能进行抽象,减少重复工作。要求实现的爬虫框架可以进行分布式爬取,解决爬虫的统一调度和统一去重,以及存储问题…

[激光原理与应用-72]:PLC架构与工作原理

目录 一、PLC简介 1.1 概述 1.2 基本组成 1.3 常见的PLC品牌比较 二、PLC程序执行原理 2.1 PLC有操作系统吗? 2.2 PLC程序执行 2.3 PLC编程语言 2.4 PLC编程过程 三、PLC编程工具 3.1 编程工具 四、PLC与工控机协同 4.1 PLC需要配置工控机吗&#xff1…

SpringBoot / Vue 对SSE的基本使用

一、SSE是什么? SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,再…

MATLAB算法实战应用案例精讲-【图像处理】相机标定(补充篇)

目录 前言 知识储备 摄像头基础知识 一、摄像头结构和工作原理 二、相关参

postman使用POST,却收到的是GET请求

现象: 可以看到我们postman发出的确实是post请求,message却报错这个接口不支持get请求,说明服务器实际上收到的是一个get请求。 产生原因分析 如果我们访问的是线上的接口,线上的nginx一般都会对http访问做一个302重定向&#xf…

生成的二维码如何解析出原来的地址?

生成的二维码如何解析出原来的地址? 随着移动互联网的发展,二维码作为一种快速获取信息的方式,在我们的生活中越来越常见。而PHP作为Web语言之一,也有着二维码解码的功能。 PHP中有着众多的二维码解码库,例如&#x…

k8s 集群部署

目录 1. 集群环境初始化 2. 所有节点安装kubeadm 3. 拉取集群所需镜像 4. 集群初始化 5. 安装flannel网络插件 6. 扩容节点 7. 设置kubectl命令补齐 官网: https://v1-23.docs.kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ …

git的使用——如何创建.gitignore文件,排除target、.idea文件夹的提交

前言 git作为开发人员必备的技能,需要熟练掌握,本篇博客记录一些git使用的场景,结合具体问题进行git使用的记录。以gitee的使用为例。 本篇博客介绍如何创建.gitignore文件,排除一些文件夹的提交,比如排除target、.i…