k8s证书100年到期

这篇具有很好参考价值的文章主要介绍了k8s证书100年到期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

kubeadm 默认证书为一年,一年过期后,会导致 api service 不可用,使用过程中会出现:x509: certificate has expired or is not yet valid.

可以在初始化群集之前重新编译 kubeadm,证书有效期自动为 100 年;也可如下重新编译修改证书

目录

一、获取源码

二、修改证书有效期

三、编译kubeadm

1 软件包准备

2 GoLang 环境

3 安装 Go 环境:

4 验证:

5 编译:

6 查看编译后的版本信息:

7 保存备用:

四、执行命令更新证书 

1 检查证书到期时间:

2 续订全部证书:

3 再次查看证书有效期,全部都 100 年了:


一、获取源码

访问:Releases · kubernetes/kubernetes · GitHub,下载特定版本源码

1
2
3
4
#wget https://github.com/kubernetes/kubernetes/archive/v1.25.0.tar.gz
#tar -zxvf kubernetes-1.25.0.tar.gz
#mv kubernetes-1.25.0 kubernetes
#cd kubernetes

或者使用 git 获取

1
2
3
4
5
# yum install git
# sudo apt install git
#git clone https://github.com/kubernetes/kubernetes.git
#cd kubernetes
#git checkout -b remotes/origin/release-1.25 v1.25.0

二、修改证书有效期

主要修改两个地方

vim ./staging/src/k8s.io/client-go/util/cert/cert.go在这个文件里找到

NotAfter:              now.Add(duration365d * 10).UTC()

输入 /NotAfter 查找,回车定位,默认是10年,修改为100年

kubernetes1.28修改证书100年,kubernetes,容器

vim ./cmd/kubeadm/app/constants/constants.go在这个文件里找到

CertificateValidity = time.Hour * 24 * 365 

输入 /CertificateValidity 查找,回车定位,后面加上*100,改为100年

kubernetes1.28修改证书100年,kubernetes,容器

验证一下已经正确修改:

1
2
#cat ./staging/src/k8s.io/client-go/util/cert/cert.go | grep NotAfter
#cat ./cmd/kubeadm/app/constants/constants.go | grep CertificateValidity

三、编译kubeadm

1 软件包准备

CentOS:

1
2
#yum groupinstall "Development Tools" -y 
#yum install rsync jq -y

Ubuntu:

1
2
#sudo apt install build-essential #(Following command will install essential #commands like gcc, make etc.)
#sudo apt install rsync jq -y
2 GoLang 环境

查看 kube-cross 的 TAG 版本号

1
2
3

# cat ./build/build-image/cross/VERSION
v1.23.0-go1.17.5-bullseye.0
#注意:之前的版本显示这种数字格式 v1.17.5

3 安装 Go 环境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wget https://dl.google.com/go/go1.17.5.linux-amd64.tar.gz
## 或者
# wget https://golang.google.cn/dl/go1.17.5.linux-amd64.tar.gz
tar zxvf go1.17.5.linux-amd64.tar.gz  -C /usr/local

# 编辑 / etc/profile 文件添加如下:
##go setting (sysin)
#export GOROOT=/usr/local/go
#export GOPATH=/usr/local/gopath
#export PATH=$PATH:$GOROOT/bin
#生效
#source /etc/profile

# 这里一次性编译,直接执行如下命令即可
export PATH=$PATH:/usr/local/go/bin
4 验证:
1
2
3
go version
# 输出如下
go version go1.17.5 linux/amd64
5 编译:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 编译 kubeadm, 这里主要编译 kubeadm 即可
make all WHAT=cmd/kubeadm GOFLAGS=-v

# 编译 kubelet
# make all WHAT=cmd/kubelet GOFLAGS=-v

# 编译 kubectl
# make all WHAT=cmd/kubectl GOFLAGS=-v

#编译完产物在 _output/bin/kubeadm 目录下,
#其中 bin 是使用了软连接 (sysin)
#真实路径是_output/local/bin/linux/amd64/kubeadm
mv /usr/bin/kubeadm /usr/bin/kubeadm_backup
cp _output/local/bin/linux/amd64/kubeadm /usr/bin/kubeadm
chmod +x /usr/bin/kubeadm
6 查看编译后的版本信息:
1
2
3
kubeadm version
# 输出如下
kubeadm version: &version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.1", GitCommit:"86ec240af8cbd1b60bcc4c03c20da9b98005b92e", GitTreeState:"archive", BuildDate:"2024-01-04T01:22:09Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"linux/amd64"}
7 保存备用:
1
2
3
4
5
6
# 压缩保存到用户主目录下
tar zcvf ~/kubeadm-1.23.1.tgz -C /usr/bin/kubeadm

# 在其他节点上替换原有版本
mv /usr/bin/kubeadm /usr/bin/kubeadm_bak
tar zxvf ./kubeadm-1.23.1.tgz -C /usr/bin/

四、执行命令更新证书 

如果是使用原版 kubeadm 安装之后,可以手动执行命令更新证书有效期到 100 年。

可以先备份证书,证书在 /etc/kubernetes/pki

1 检查证书到期时间:
1
2
3
kubeadm certs check-expiration
# 早期版本 (1.19 及之前版本) 命令如下
#kubeadm alpha certs check-expiration

kubeadm alpha 命令 1.21 开始彻底废弃。文章来源地址https://www.toymoban.com/news/detail-783208.html

2 续订全部证书:
1
kubeadm certs renew all
3 再次查看证书有效期,全部都 100 年了:
1
kubeadm certs check-expiration

到了这里,关于k8s证书100年到期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【k8s】(九)kubernetes1.29.4离线部署之-Token过期后加入节点

    (一)kubernetes1.29.4离线部署之-安装文件准备 (二)kubernetes1.29.4离线部署之-镜像文件准备 (三)kubernetes1.29.4离线部署之-环境初始化 (四)kubernetes1.29.4离线部署之-组件安装 (五)kubernetes1.29.4离线部署之-初始化第一个控制平面 (六)kubernetes1.29.4离线部署之-加入Node节点

    2024年04月27日
    浏览(40)
  • k8s学习(三十六)centos下离线部署kubernetes1.30(单主节点)

    主机ip 用途 192.168.115.120 K8s-normal-master 192.168.115.121 K8s-normal-node01 每台机器都执行 查看内核: 查看操作系统: 下载地址:https://elrepo.org/linux/kernel/el7/x86_64/RPMS/ 上传下载的内核安装包,执行命令: 执行命令: 修改/etc/default/grub GRUB_DEFAULT=saved 改为 GRUB_DEFAULT=0,保存退出 重新加

    2024年04月27日
    浏览(40)
  • k8s(kubernetes)证书续期

    简介 kubernetes集群上kubeadm 安装的证书默认为 1 年,注意原证书文件必须保留在服务器上才能做延期操作,否则就会重新生成,集群可能无法恢复,这里在证书快到期之前进行续期操作。 方式一(推荐) 一、准备工作 1、查看证书有效期 命令: kubeadm certs check-expiration 2、更新

    2024年02月13日
    浏览(35)
  • Kubernetes(K8s 1.28.x)部署---超详细

    目录 一、基础环境配置(所有主机均要配置) 1、配置IP地址和主机名、hosts解析 2、关闭防火墙、禁用SELinux 3、安装常用软件 4、配置时间同步 5、禁用Swap分区 6、修改linux的内核参数 7、配置ipvs功能 二、容器环境操作 1、定制软件源 2、安装最新版docker 3、配置docker加速器 4、

    2024年02月11日
    浏览(41)
  • kubernetes(k8s) v1.28.2 安装与部署

    版本:kubernetes(k8s) v1.28.2 并准备主机名映射。 设置好静态IP。 在Ubuntu的/etc/hosts文件中,填入如下内容。也可以在Windows的C:WindowsSystem32driversetchosts文件中填写相同内容。 关闭防火墙和SELinux。 关闭防火墙命令如下。 可使用命令 systemctl status firewalld 查看防火墙状态。 关闭

    2024年02月03日
    浏览(48)
  • ​二进制安装Kubernetes(k8s)v1.28.0

    https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。 我使用IPV6的目的是在公网进行访问,所以我配置了IPV6静态地址。 若您没有IPV6环境,或者不想使用IPv6,不对主机进行配置IPv6地址即可。 不配置IPV6,不影

    2024年02月05日
    浏览(49)
  • 二进制安装Kubernetes(k8s)v1.28.3

    https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。 我使用IPV6的目的是在公网进行访问,所以我配置了IPV6静态地址。 若您没有IPV6环境,或者不想使用IPv6,不对主机进行配置IPv6地址即可。 不配置IPV6,不影

    2024年02月05日
    浏览(58)
  • 运维高级学习--Kubernetes(K8s 1.28.x)部署

    主机名规划 1.配置IP地址和主机名、hosts解析 2.关闭防火墙、禁用SELinux 3.安装常用软件 4.时间同步 5.禁用Swap分区 6.修改linux的内核参数 7.配置ipvs功能 1.定制软件源 2.安装最新版docker 3.配置docker加速器 4.启动docker 定制软件源(所有主机操作) 在仓库中新建项目:google_container

    2024年02月11日
    浏览(41)
  • Kubernetes(K8s 1.28.x)部署---创建方式Docker(超详细)

    目录 一、基础环境配置(所有主机均要配置) 1、配置IP地址和主机名、hosts解析 2、关闭防火墙、禁用SELinux 3、安装常用软件 4、配置时间同步 5、禁用Swap分区 6、修改linux的内核参数 7、配置ipvs功能 二、容器环境操作 1、定制软件源 2、安装最新版docker 3、配置docker加速器 4、

    2024年02月09日
    浏览(43)
  • k8s修改apiserver证书可用年限

    使用 kubeadm 部署的 K8S 集群中,apiserver 证书的默认可用年限只有一年。如果直接用在生产环境,当证书过期后会造成 K8S 集群瘫痪,从而影响现网业务。 1,查看 K8S 集群所有证书存放位置 2,查看 apiserver 证书信息,默认可用年限只有一年 3,查看 ca 证书信息,默认可用年限为

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包