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

方案一 通过修改kubeadm 调整证书过期时间

修改代码,调整过期时间

方案二 通过自动轮换证书默认开启

以下方案通过第二种方法模拟集群证书过期

准备

本次集群版本1.15

备份集群证书(略)

cd /etc/kubernetes

tar czvf kubernetes.tar.gz kubernetes

Master节点:

[root@k8s-master .kube]# hwclock --show

2020年01月21日 星期二 15时16分34秒  -0.856601 秒

[root@k8s-master .kube]# kubectl get nodes

NAME         STATUS   ROLES    AGE    VERSION

k8s-master   Ready    master   167d   v1.15.0

k8s-node1    Ready    node     166d   v1.15.0

[root@k8s-master .kube]# kubeadm alpha certs check-expiration

CERTIFICATE                EXPIRES                  RESIDUAL TIME   EXTERNALLY MANAGED

admin.conf                 Jan 20, 2021 07:09 UTC   364d            no      

apiserver                  Jan 20, 2021 07:09 UTC   364d            no      

apiserver-etcd-client      Jan 20, 2021 07:09 UTC   364d            no      

apiserver-kubelet-client   Jan 20, 2021 07:09 UTC   364d            no      

controller-manager.conf    Jan 20, 2021 07:09 UTC   364d            no      

etcd-healthcheck-client    Jan 20, 2021 07:09 UTC   364d            no      

etcd-peer                  Jan 20, 2021 07:09 UTC   364d            no      

etcd-server                Jan 20, 2021 07:09 UTC   364d            no      

front-proxy-client         Jan 20, 2021 07:09 UTC   364d            no      

scheduler.conf             Jan 20, 2021 07:09 UTC   364d            no      

[root@k8s-master .kube]#

先生成集群配置文件

kubeadm config view > /root/kubeadm.yaml 

要提前备份一下集群配置文件,当集群证书过期后 此命令也不能执行了

修改时间让集群过期

[root@k8s-master .kube]# date -s "2021-08-08"

2021年 08月 08日 星期日 00:00:00 CST

[root@k8s-master .kube]# date

2021年 08月 08日 星期日 00:00:02 CST

[root@k8s-master .kube]# kubectl get nodes

Unable to connect to the server: x509: certificate has expired or is not yet valid

[root@k8s-master .kube]#

更新证书

[root@k8s-master ~]# kubeadm alpha certs renew all --config=/root/kubeadm.yaml

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 healtcheck 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

[root@k8s-master ~]# kubeadm alpha certs check-expiration

CERTIFICATE                EXPIRES                  RESIDUAL TIME   EXTERNALLY MANAGED

admin.conf                 Aug 07, 2022 16:02 UTC   364d            no      

apiserver                  Aug 07, 2022 16:02 UTC   364d            no      

apiserver-etcd-client      Aug 07, 2022 16:02 UTC   364d            no      

apiserver-kubelet-client   Aug 07, 2022 16:02 UTC   364d            no      

controller-manager.conf    Aug 07, 2022 16:02 UTC   364d            no      

etcd-healthcheck-client    Aug 07, 2022 16:02 UTC   364d            no      

etcd-peer                  Aug 07, 2022 16:02 UTC   364d            no      

etcd-server                Aug 07, 2022 16:02 UTC   364d            no      

front-proxy-client         Aug 07, 2022 16:02 UTC   364d            no      

scheduler.conf             Aug 07, 2022 16:02 UTC   364d            no

重启master节点三个容器:

[root@k8s-master .kube]# docker ps |grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd'|xargs docker restart

98257170f1fb

k8s_kube-apiserver_kube-apiserver-k8s-master_kube-system_db9cf46161351d3a7f76537093caa0b8_10

82c07f5d9b6f

k8s_etcd_etcd-k8s-master_kube-system_2da345f314df09b06ba8257f5457dbed_6

Error response from daemon: No such container: 201c7a840312

Error response from daemon: No such container: kube-apiserver --ad…

Error response from daemon: No such container: 18

Error response from daemon: No such container: months

Error response from daemon: No such container: ago

Error response from daemon: No such container: Up

Error response from daemon: No such container: 18

Error response from daemon: No such container: months

Error response from daemon: No such container: 2c4adeb21b4f

Error response from daemon: No such container: etcd --advertise-cl…

Error response from daemon: No such container: 18

Error response from daemon: No such container: months

Error response from daemon: No such container: ago

Error response from daemon: No such container: Up

Error response from daemon: No such container: 18

Error response from daemon: No such container: months

[root@k8s-master .kube]# kubectl get nodes

NAME         STATUS   ROLES    AGE    VERSION

k8s-master   Ready    master   2y1d   v1.15.0

k8s-node1    Ready    node     2y1d   v1.15.0

[root@k8s-master .kube]# date

2021年 08月 08日 星期日 00:04:33 CST

[root@k8s-master .kube]#

注意同步配置文件:

cp /etc/kubernetes/admin.conf /root/.kube/config

删除.kube下的缓存目录

总结

当集群证书过期时操作步骤:

1.提前备份集群配置文件

 kubeadm config view > /root/kubeadm.yaml

2.更新集群证书

kubeadm alpha certs renew all --config=/root/kubeadm.yaml

3.同步配置文件,清除.kube下缓存

cp /etc/kubernetes/admin.conf /root/.kube/config

kubernetes集群证书更新的更多相关文章

  1. k8s kubernetes 集群 证书更新操作

    转载自https://www.cnblogs.com/kuku0223/p/12978716.html 1. 各个证书过期时间 /etc/kubernetes/pki/apiserver.crt #1 ...

  2. kubernetes集群证书过期之后--转发

    步骤 如果有多master,需要在每个master上进行以下操作. 需要进行以下步骤 重新生成证书 重新生成对应的配置文件 重启docker 和 kubelet 拷贝kubectl 客户端文件 [ro ...

  3. 基于TLS证书手动部署kubernetes集群(下)

    一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...

  4. Kubernetes集群中Service的滚动更新

    Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经“全天候化”,为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足 ...

  5. Kubernetes 集群部署(1) -- 自签 TLS 证书

    集群功能各模块功能描述: Master节点:主要由四个模块组成,APIServer,schedule, controller-manager, etcd APIServer: APIServer负责对 ...

  6. (转)基于TLS证书手动部署kubernetes集群(下)

    转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...

  7. K8S 使用Kubeadm搭建高可用Kubernetes(K8S)集群 - 证书有效期100年

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  8. 和我一步步部署 kubernetes 集群

    和我一步步部署 kubernetes 集群 本系列文档介绍使用二进制部署最新 kubernetes v1.6.1 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群: 在部署的过程中, ...

  9. Traefik实现Kubernetes集群服务外部https访问

    转载请注明出处:http://www.cnblogs.com/wayneiscoming/p/7707942.html traefik 是一个前端http反向代理服务器以及负载均衡器,支持多种微服务后 ...

随机推荐

  1. 微信小程序(二十)-UI组件(Vant Weapp)-02使用

    1.按钮使用 https://vant-contrib.gitee.io/vant-weapp/#/button 1.全局引入,在app.json中引入组件 "usingComponents ...

  2. SpringBoot Test 多线程报错:dataSource already closed

    1:前言 最近在项目中使用多线程对大任务拆分处理时,进行数据库操作的时候报错了. 业务代码大概是这样的: @Service public calss TestServiceImpl implement ...

  3. Python3+PYQT5 实现并打包exe小工具(1)

    前言: 由于项目原因,配置测试环境与正式环境切换频率很高,固写了一键切换环境的工具.用于记录. 实现逻辑: 1.读取注册表中客户端的安装目录,把固定的环境配置文件添加到固定目录下实现配置测试环境: 2 ...

  4. 翻译:《实用的Python编程》03_00_Overview

    目录 | 上一节 (2 处理数据) | 下一节 (4 类和对象) 3. 程序组织 到目前为止,我们已经学习了一些 Python 基础知识并编写了一些简短的脚本.但是,当开始编写更大的程序时,我们会想要 ...

  5. PUToast - 使用PopupWindow在Presentation上模拟Toast

    PUToast Android10 (API 29) 之前 Toast 组件默认只能展示在主 Display 上,PUToast 通过构造一个 PopupWindoww 在 Presentation ...

  6. HDOJ-3065(AC自动机+每个模板串的出现次数)

    病毒侵袭持续中 HDOJ-3065 第一个需要注意的是树节点的个数也就是tree的第一维需要的空间是多少:模板串的个数*最长模板串的长度 一开始我的答案总时WA,原因是我的方法一开始不是这样做的,我是 ...

  7. Vulnhub dc-4靶机通关

    Vulnhub dc-4靶机通关 下载地址:https://download.vulnhub.com/dc/DC-4.zip 安装好dc-4靶机 使用局域网查看器扫描到ip地址 端口扫描,发现运行了8 ...

  8. 无限可能 | Flutter 2 重点更新一览

    我们非常高兴在本周发布了 Flutter 2.自 Flutter 1.0 发布至今已有两年多的时间,在如此短暂的时间内,我们解决了 24,541 个 issue,合并了来自 765 个贡献者的 17, ...

  9. TIOBE 编程语言排行榜

    https://www.tiobe.com/tiobe-index/ TIOBE 编程语言排行榜是编程语言流行趋势的一个指标

  10. Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架

    目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...