1.实验目的

通过kubeadm安装的kubernetes集群各个组件所使用证书的期限为1年,本实验练习的是到期之后如何续期。

2.实验环境

ubernetes环境及版本
整个实验三台机器192.168.32.128作为master,192.168.32.129/130是node,kubernetes的版本是1.23.0。


所使用系统为centos7.6

3.实验步骤

1.查看证书过期时间
在master上查看各证书的过期时间
[root@master ~r]# kubeadm certs check-expiration

从这里可以看到证书过期时间是到2023年9月23日。

查看master(192.168.32.128)上kubelet证书的过期时间。
[root@master ~]# ls /var/lib/kubelet/pki/
[root@master ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not

这里可以看到过期时间在2023年9月3日。
查看node1(192.168.32.129)上kubelet证书的过期时间。
[root@k8s-node1 ~]# ls /var/lib/kubelet/pki/
[root@k8s-node1 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not

这里可以node1看到过期时间在2023年9月3日。
查看node2(192.168.32.130)上kubelet证书的过期时间。
[root@k8s-node2 ~]# ls /var/lib/kubelet/pki/
[root@k8s-node2 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not

这里可以看到node2过期时间在2023年9月3日。

备份相关文件目录
cp -r /etc/kubernetes/ /tmp/backup/ # 静态pods配置以及证书
cp -r /var/lib/ kubernetes /tmp/backup.crr #证书pem存放目录

2.模拟证书过期
把所有系统的时间改为2024年9月5日,在xshell的撰写栏输入命令 。
[root@master ~]# timedatectl set-ntp false ; date -s “2024-09-5 10:00:00” ; hwclock -w
[root@k8s-node1 ~]# timedatectl set-ntp false ; date -s “2024-09-5 10:00:00” ; hwclock -w
[root@k8s-node2 ~]# timedatectl set-ntp false ; date -s “2024-09-5 10:00:00” ; hwclock -w

在master上确认当前时间
再次执行kubectl命令。
[root@master ~]# kubectl get nodes
可以看到现在kubectl已经没法正常使用了,提示证书过期。

3.轮换master上证书
在master(192.168.32.1128)续签所有证书。
查看没续签之前的证书日期:
开始续签:
[root@master kubernetes]# kubeadm certs renew all
在master(192.168.32.128)再次查看证书过期日期。
[root@master kubernetes]# kubeadm certs check-expiration
可以看到过期时间现在已经是1年后了,即到2054年9月5日过期。
查看/etc/kubernetes/pki/证书是否更新了。
[root@master kubernetes]# ll -a /etc/kubernetes/pki/
可以看到证书都重新生成了,并且日期是改变了的。

当前kubernetes各组件所使用的kubeconfig在/etc/kubernetes/里。
[root@master kubernetes]# ll -a /etc/kubernetes/
这些文件里所用到的证书均是之前过期的证书,所以需要把所有的这些kubeconfig文件(后缀为conf)删除重新生成。
[root@master kubernetes]# rm -rf /etc/kubernetes/*.conf
[root@master kubernetes]# ls
manifests pki

为这些组件重新生成kubeconfig文件。
注意版本号
[root@master kubernetes]# kubeadm init --kubernetes-version=v1.23.0 phase kubeconfig all

查看是否生成出来了新的配置文件
[root@master kubernetes]# ll -a /etc/kubernetes/
这里也生成了kubelet所需要的kubeconfig文件,就是上面的kubelet.conf。

重新拷贝管理员所用的新的kubeconfig文件。
备份下/root/kube/config 文件:
cp /root/kube/config /tmp/kube.old/config
替换:
[root@master kubernetes]# cp /etc/kubernetes/admin.conf ~/.kube/config

重启kube-scheduler。
[root@master kubernetes]# docker ps -a | grep kube-scheduler | awk ‘{print $1}’
eb081970183f
7061ee08ac11
[root@master kubernetes]# docker rm -f eb081970183f 7061ee08ac11
eb081970183f
7061ee08ac11

等待kube-scheduler彻底启动起来,即状态为1/1。
[root@master kubernetes]# kubectl get pods -n kube-system | grep scheduler

4.轮换kubelet证书
轮换master上的kubelet证书
查看kubelet当前所使用的证书。
[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
可以看到此处kubelet当前使用的证书还是2022-9-3的,使用的是已经过期的证书,需要生成新的证书。
通过kubeadm alpha certs renew all更新的 k8s 证数,是不会更新 kubelet.conf 的证书的。所以此处的证书重启kubelet cho重新生成。
因为前面已经重新生成了kubelet.conf,现在重启kubelet。
[root@master kubernetes]# systemctl restart kubelet
[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
这里kubelet-client-2024-09-05-10-36-28.pem是新颁发的证书。
此时kubelet-client-current.pem是软连接到kubelet-client-2024-09-05-10-36-28.pem的。

在master上查看证书签名请求(简称为CSR)。
[root@master kubernetes]# kubectl get csr
然后批准此CSR。
[root@master kubernetes]# kubectl certificate approve csr-vg9bd
certificatesigningrequest.certificates.k8s.io/csr-vg9bd approved

查看当前kubelet证书的过期时间。
[root@master kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not
这里显示过期时间到2025年9月5日。
5.轮换node上的kubelet证书
查看当前node1上的kubelet证书
[root@k8s-node1 ~]# ls /var/lib/kubelet/pki/
这里显示的还是之前的旧的证书。
在master(192.168.32.128)上生成worker所需要的kubelet.conf临时放在/tmp下
[root@master tmp]# mkdir -p /tmp/worker

生成node1所需要的kubelet.conf文件。

标红处注意更改成自己的信息
[root@master worker]# kubeadm init --kubernetes-version=v1.23.0 phase kubeconfig kubelet --node-name k8s-node1 --kubeconfig-dir /tmp/worker/
[kubeconfig] Writing “kubelet.conf” kubeconfig file
把此文件拷贝到node1(192.168.32.129)上的/etc/kubernetes/目录里覆盖原来的kubelet.conf。
先备份原先node的kubelet.conf文件:
[root@k8s-node1 kubernetes]# mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.old

[root@master worker]# scp /tmp/worker/kubelet.conf root@192.168.32.129:/etc/kubernetes/

切换到node1,重启kubelet
[root@k8s-node1 kubernetes]# systemctl restart kubelet
再次查看证书
[root@k8s-node1 kubernetes]# ll -a /var/lib/kubelet/pki/
此时已经生成了新的证书kubelet-client-2024-09-05-11-09-57.pem且kubelet-client-current.pem是连接到此证书的。
查看kubelet证书的过期时间。
[root@k8s-node1 kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not
这里显示过期时间为2025年9月5日。

切换到master(192.168.32.128)上,查看CSR。
[root@master worker]# kubectl get csr
[root@master worker]# kubectl certificate approve csr-hppq2

所有的CSR已经全部批准。
如果有多台worker的话,使用类似的方法操作。

6.测试

在master上创建pod1.yaml内容如下。

[root@master worker]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1
name: pod1
spec:
containers:

  • image: nginx
    imagePullPolicy: IfNotPresent
    name: pod1
    resources: {}
    dnsPolicy: ClusterFirst
    restartPolicy: Always
    status: {}

创建此pod。
[root@master worker]# kubectl apply -f pod1.yaml
pod/pod1 created

[root@master worker]# kubectl get pods -owide
pod正常运行。

k8s-kubeadm证书过期续订解决方法相关推荐

  1. K8S 证书过期的解决方法

    K8S 证书过期的解决方法 2年前用虚拟机做K8S集群学习.最近打开当时的虚拟机,发现K8S无法启动. The connection to the server xxxx:6443 was refus ...

  2. win7电脑浏览器证书过期的解决方法

    最近有很多小伙伴反应win7系统打开电脑浏览器时会出现证书过期或者错误的问题,由于很多小伙伴用的不是微软官方正版授权的系统,所以出现这种情况时无可避免的,这个时候小伙伴们可以仔细校对下电脑系统的日期和 ...

  3. Elasticsearch7.x证书过期简单解决方法

    此方法可能只适用于7.x的basic版本,其他版本笔者尚未尝试. 笔者所使用的是7.6.1 basic版 开发环境使用的Elasticsearch在经过一次断电后,显示证书不可用: 网上搜索一番后,大 ...

  4. k8s常见报错以及解决方法(一)

    k8s常见报错以及解决方法(一) 现阶段我们使用k8s集群越来越多,随之而来的是一系列的问题,接下来我向大家来介绍一下我遇到的一些问题以及解决方法 一.报错cannot allocate memory ...

  5. 登陆SQL Server 2000数据库提示超时已过期的解决方法

    登陆SQL Server 2000数据库提示超时已过期的解决方法 参考文章: (1)登陆SQL Server 2000数据库提示超时已过期的解决方法 (2)https://www.cnblogs.co ...

  6. oracle 7天密码过期,Oracle 密码过期 ORA-28002: 7 天之后口令将过期 的解决方法

    Oracle 密码过期 ORA-28002: 7 天之后口令将过期 的解决方法 今天福州大学的合作伙伴说我们数据库的登录密码过期.他们现在平台无法登录.希望得到解决. 登陆Oracle数据库时错误信息 ...

  7. plsql数据库密码过期的解决方法

    plsql数据库密码过期的解决方法 2014-10-11      0个评论    来源:鹏javatar的专栏   收藏   我要投稿 id="iframeu2597680_0" ...

  8. IE8浏览器的访问网页显示证书错误的解决方法

    https://blog.csdn.net/m0_74847010/article/details/130413078 我在这篇文章中最后一张图访问网站验证时,显示证书错误. 解决方法:将cer证书更 ...

  9. oracle用户密码已过期,oracle提示登录密码过期完美解决方法

    oracle 提示登录密码过期解决 1.登录到oracle的 服务器 2.切换到oracle 用户 3.设置到当前操作的实例名:export ORACLE_SID=XXX 4.连接数据库的命令行模式: ...

最新文章

  1. 去掉chrome记住密码后自动填充表单的黄色背景
  2. ElasticSearch安装拼音插件(pinyin)
  3. 深度学习与计算机视觉(四)反向传播及其直观理解
  4. 黑马训练营自学笔记(03)
  5. C语言(CED)C语言中双引号和单引号的区别
  6. JavaScript中forEach、for-in、for-of循环的比较
  7. FreeCAD开发:修改了源码,需要翻译成中文,如何更新语言包
  8. java什么是类枚举类_Java 枚举类 详解
  9. 怎么把mov视频转换成mp4格式
  10. LCD和OLED显示屏有什么区别?
  11. 爬虫Scrapy框架运用----房天下二手房数据采集
  12. 学习笔记Java小游戏学习笔记
  13. 如何评价《就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者》里面这位CEO的所作所为?
  14. 使用Neo4j+InteractiveGraph实现豆瓣电影知识图谱可视化
  15. C#练习题答案: TO DE-RY-PO-陆琪暗号【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
  16. 【计算机视觉】数字图像处理(三)—— 图像变换原理分析
  17. TMS320C6748开发视频教程笔记 第12章 通用输入输出口 GPIO
  18. win7系统打开连接网络连接到服务器,win7的网络连接在哪里?win7系统开启网络连接的多种方法...
  19. spring mvc的DataBinder、Validator、BeanWrapper、ConversionService、Formatter
  20. 去除文字里的html标签的C#方法

热门文章

  1. 【刘浩运7.19作业】
  2. 反掩码有什么作用?通配符掩码有什么作用?
  3. 为什么说可追溯性非常重要?
  4. SAP一句话入门:SD PP MM FICO HR
  5. OrientDB图遍历SQL之MATCH
  6. LTE射频拉远单元数字中频方案(八)
  7. “2018可信区块链峰会”8大分论坛精彩提要!
  8. 超详细梳理HBase核心知识点(上)
  9. mysql threadpool_ThreadPool(线程池) in .Net
  10. java 中的extends_java中? extends T 和? super T解析