热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s证书过期问题

一、背景k8s默认证书有效时间是1年,证书过期后就不能执行相关命令进行管理,如下图: 二、查看证书有效时间可以看出RESIDUAL的显示结果是invalid,表示过期[root@m

一、背景

k8s默认证书有效时间是1年,证书过期后就不能执行相关命令进行管理,如下图:

k8s证书过期问题

 二、查看证书有效时间

可以看出RESIDUAL的显示结果是invalid,表示过期

[root@master pki]# kubeadm certs check-expiration
[check-expiration] Reading configuration from the cluster...
[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[check-expiration] Error reading configuration from the Cluster. Falling back to default configuration

CERTIFICATE                EXPIRES                  RESIDUAL TIME   CERTIFICATE AUTHORITY   EXTERNALLY MANAGED
admin.conf                 Dec 28, 2021 08:24 UTC          ca                      no      
apiserver                  Dec 28, 2021 08:24 UTC          ca                      no      
apiserver-etcd-client      Dec 28, 2021 08:24 UTC          etcd-ca                 no      
apiserver-kubelet-client   Dec 28, 2021 08:24 UTC          ca                      no      
controller-manager.conf    Dec 28, 2021 08:24 UTC          ca                      no      
etcd-healthcheck-client    Dec 28, 2021 08:24 UTC          etcd-ca                 no      
etcd-peer                  Dec 28, 2021 08:24 UTC          etcd-ca                 no      
etcd-server                Dec 28, 2021 08:24 UTC          etcd-ca                 no      
front-proxy-client         Dec 28, 2021 08:24 UTC          front-proxy-ca          no      
scheduler.conf             Dec 28, 2021 08:24 UTC          ca                      no      

CERTIFICATE AUTHORITY   EXPIRES                  RESIDUAL TIME   EXTERNALLY MANAGED
ca                      Dec 20, 2031 07:18 UTC   9y              no      
etcd-ca                 Dec 20, 2031 07:18 UTC   9y              no      
front-proxy-ca          Dec 20, 2031 07:18 UTC   9y              no  

三、解决方案

修改源码重新生成

官方默认证书都是一年,我就以生成证书有效期为10年为例

现在机器上安装go环境,这个过程就省略了,度娘下很简单

1、查看当前环境安装的看k8s版本

kubeamd  version

2、下载源码

github上下载看k8s的源码,版本是第一步查询的版本,过程略

3、修改代码

我的版本是1.23.1版本,修改/opt/kubernetes/cmd/kubeadm/app/util/pkiutil/pki_helpers.go文件,我的大概在653行,有可能不同版本地方不一样,可以通过kubeadmconstants.CertificateValidity关键词搜索定位

注释掉notAfter := time.Now().Add(kubeadmconstants.CertificateValidity).UTC()

在上面添加:

const year10 = time.Hour * 24 * 365 * 10

notAfter := time.Now().Add(year10).UTC()

k8s证书过期问题

 

 

4、重新编译

make WHAT=cmd/kubeadm GOFLAGS=-v

k8s证书过期问题

 

会在/opt/kubernetes/_output/bin 下生成kubeadm命令

 

5、备份原来的kubeadm和证书文件,避免出错还原

cp  /usr/bin/kubeadm /usr/bin/kubeadm_bak
cp -r  /etc/kubernetes/pki /etc/kubernetes/pki_bak

6、拷贝kubeadm到/usr/bin/下

[root@master bin]# pwd
/opt/kubernetes-master/_output/bin
[root@master bin]# 
[root@master bin]# 
[root@master bin]# ll
total 79136
-rwxr-xr-x 1 root root  6295552 Dec 28 16:58 conversion-gen
-rwxr-xr-x 1 root root  6021120 Dec 28 16:58 deepcopy-gen
-rwxr-xr-x 1 root root  6029312 Dec 28 16:58 defaulter-gen
-rwxr-xr-x 1 root root  3376703 Dec 28 16:58 go2make
-rwxr-xr-x 1 root root 45187072 Dec 28 17:00 kubeadm
-rwxr-xr-x 1 root root  8126464 Dec 28 16:58 openapi-gen
-rwxr-xr-x 1 root root  5996544 Dec 28 16:58 prerelease-lifecycle-gen
[root@master bin]# 
[root@master bin]# cp kubeadm /usr/bin/
cp: overwrite ‘/usr/bin/kubeadm’? y

7、重新生成证书

[root@master bin]# kubeadm certs renew all
[renew] Reading configuration from the cluster...
[renew] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[renew] Error reading configuration from the Cluster. Falling back to default configuration

certificate embedded in the kubeconfig file for the admin to use and for kubeadm itself renewed
certificate for serving the Kubernetes API renewed
certificate the apiserver uses to access etcd renewed
certificate for the API server to connect to kubelet renewed
certificate embedded in the kubeconfig file for the controller manager to use renewed
certificate for liveness probes to healthcheck etcd renewed
certificate for etcd nodes to communicate with each other renewed
certificate for serving etcd renewed
certificate for the front proxy client renewed
certificate embedded in the kubeconfig file for the scheduler manager to use renewed

Done renewing certificates. You must restart the kube-apiserver, kube-controller-manager, kube-scheduler and etcd, so that they can use the new certificates.

8、重启相关服务

[root@master bin]# docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash
3af36fb43da0
6ff7681f2556
91eaaacf2664
b886b4e5f623

9、确认证书时间

这里图上看是9年有肯能是时间取整了的原因

k8s证书过期问题

 

 可以使用基本管理命令了

k8s证书过期问题

 


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 深入解析 RuntimeClass 及多容器运行时应用
    本文旨在探讨RuntimeClass的起源、功能及其在多容器运行时环境中的实际应用。通过详细的案例分析,帮助读者理解如何在Kubernetes集群中高效管理不同类型的容器运行时。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 深入探讨配置文件的管理与优化
    尽管配置文件的重要性不言而喻,但其管理和安全性问题却常被忽视。本文将详细讨论配置文件的不同管理策略及其优缺点。 ... [详细]
  • 本文深入探讨了Kubernetes中Pod的基础概念及其分类,旨在帮助读者更好地理解和利用这一核心组件。通过详细的解析,我们将了解Pod如何作为最小的部署单元在Kubernetes集群中工作。 ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
author-avatar
温恭凯364092
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有