当前位置: 首页 > news >正文

k8s证书更新,kubeadm安装的K8S证书过期后无法使用后证书更新方法

k8s证书更新

1. 查看证书过期时间

#通过文件查看证书过期时间
for item in `find /etc/kubernetes/pki -maxdepth 2 -name "*.crt"`;do openssl x509 -in $item -text -noout| grep Not;echo ======================$item===============;done 
#通过命令查看证书过期时间
kubeadm certs check-expiration

k8s安装一年后证书显示过期。证书未自动续期。
以下操作需到所有master节点操作
一般情况下,k8s创建的集群节点上的/usr/bin/文件夹下会存在kubeadm二进制文件,如果发现master节点上没有kubeadm,可以从官方下载对应的版本并且安装。

2. 备份文件

## 将k8s和tecd相关文件做备份
cp -r /etc/kubernetes /etc/kubernetes.bak
cp -r /var/lib/etcd /var/lib/etcd.bak

3. 证书更新

kubeadm certs renew all          #新版本更新证书
kubeadm alpha certs renew all    #老版本更新证书

4. 更新kubeconfig

mv /etc/kubernetes/admin.conf  /root/
cp -r /root/.kube /root/.kube.bak
cp -f /etc/kubernetes/admin.conf /root/.kube/config
kubeadm init phase kubeconfig all  #更新kubeconfig

5. 验证

# 验证与组件重启,执行完上述更新证书操作后可以通过
echo | openssl s_client -showcerts -connect 127.0.0.1:6443 -servername api 2>/dev/null | openssl x509 -noout -enddate#验证apiserver证书有效期是否更新,会发现证书有效期没有更新。此原因是k8s组件如果没有重启就不会使用新证书导致的,执行如下命令
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=kube-apiserver)
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=kube-controller-manager) 
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=kube-scheduler)
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=etcd)#以重启k8s及etcd相关组件后,再次执行可以观察到证书有效期已经发生变化
echo | openssl s_client -showcerts -connect 127.0.0.1:6443 -servername api 2>/dev/null | openssl x509 -noout -enddate# 注意:必须重启一下kubelet docker
systemctl restart kubelet docker#docker重启后容器都是未运行中,请通过此命令运行所有的容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)#根据容器的状态,删除Exited状态的所有容器,不然K8S的组件(etcd,kube-apiserver,kube-controller-manager,kube-scheduler)重名运行不起来
docker rm $(sudo docker ps -qf status=exited)#此时,还是无法使用kubectl get nodes,一定要重启机器
reboot

次博客是本人测试过v1.23.8版本后,没有问题后撰写的,请大家放心操作!

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE   VERSION
k8s-master   Ready      control-plane,master   54d   v1.23.8
k8s-node1    Ready      <none>                 54d   v1.23.8
k8s-node2    Ready      <none>                 54d   v1.23.8
[root@k8s-master ~]# 
http://www.lryc.cn/news/103429.html

相关文章:

  • java实现日期拆分的方法
  • Ansible之playbook剧本编写
  • 【ChatGPT辅助学Rust | 基础系列 | Hello, Rust】编写并运行第一个Rust程序
  • 自监督去噪:Noise2Noise原理及实现(Pytorch)
  • BES2700 SDK绝对时间获取方法
  • Closure Table-树形多级关系数据库设计(MySql)
  • 【SQL应知应会】表分区(一)• MySQL版
  • java语法基础-- 变量、标识符、关键字
  • [STL]stack和queue模拟实现
  • 汽车销售企业消费税,增值税高怎么合理解决?
  • flask数据库操作
  • 【C++】 哈希
  • TCP三次握手和四次挥手以及11种状态(二)
  • 【华为OD】运维日志排序
  • Mag-Fluo-4 AM,镁离子荧光探针,是一种有用的细胞内镁离子指示剂
  • 与 ChatGPT 进行有效交互的几种策略
  • 华为云安装MySQL后,本地工具连接MySQL失败
  • Flink On Yarn模式部署与验证
  • [数据库]对数据库事务进行总结
  • 【Lua学习笔记】Lua进阶——Table(2)
  • 如何进行软件回归测试
  • php://filter绕过死亡exit
  • RS485/RS232自由转ETHERNET/IP网关profinet和ethernet区别
  • Hadoop_HDFS_常见的文件组织格式与压缩格式
  • 算法与数据结构(四)--排序算法
  • 【C/C++】C++11 在各编译器版本支持详情
  • flutter开发实战-图片保存到相册
  • 数据结构---栈
  • 【RabbitMQ】golang客户端教程1——HelloWorld
  • 计算机图形学笔记2-Viewing 观测