K8S证书过期解决办法之替换证书

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

目录

1 证书过期的情况

2 Kubernetes环境介绍

3 替换证书步骤

3.1 在master上查看各证书的过期时间

3.2 查看master(192.168.0.190)上kubelet证书列表

3.3  查看master(192.168.0.190)上kubelet证书的过期时间

3.4 查看node1和node2上kubelet证书的过期时间(同(2))

3.5 备份相关证书文件的目录

3.6 轮换master上证书

3.7 再次查看证书过期日期

3.8 查看/etc/kubernetes/pki/证书是否更新了

3.9 移除conf文件

3.10 重新生成kubeconfig文件

3.11 查看是否生成出来了新的配置文件

3.12 重新拷贝管理员所用的新的kubeconfig文件

3.13 重启kube-scheduler

4 轮换kubelet证书

4.1 轮换master上的kubelet证书

4.1.1 在master上查看证书签名请求(简称为CSR)

4.1.2 查看当前kubelet证书的过期时间

 4.2 轮换node上的kubelet证书

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

4.2.2 切换到node1,重启kubelet 

5 重启集群

6 后遗症


本博客参考

https://blog.csdn.net/Harry_z666/article/details/128015175

已进行了验证,非常感谢原文博主的记录~

另外,我的kubernetes版本为V1.23.4。

请在更新证书前使用命令行删除之前的工作部署容器,以免产生垃圾数据,对测试产生不必要的麻烦。截图上的时间请忽略,注意内容就好,毕竟记录本篇博客的时候我已经按着教程更新完了证书,都是补图或搜索到的状态类似的图。

1 证书过期的情况

使用kubeadm方式安装的kubernetes集群各个组件所使用的证书期限为1年,到期后,证书失效,kubectl命令无法使用,在使用kubectl命令时,报错无法连接到localhost:8080。

2 Kubernetes环境介绍

192.168.0.190为master节点,192.168.0.191、192.168.0.192分别为node1和node2节点。操作系统为linux 4.19.90-25.2.v2101.gfb01.ky10.aarch64

3 替换证书步骤

3.1 在master上查看各证书的过期时间

kubeadm certs check-expiration

k8s 更换证书,kubernetes,容器,linux

3.2 查看master(192.168.0.190)上kubelet证书列表

ls /var/lib/kubelet/pki/

k8s 更换证书,kubernetes,容器,linux

3.3  查看master(192.168.0.190)上kubelet证书的过期时间

openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not

k8s 更换证书,kubernetes,容器,linux

3.4 查看node1和node2上kubelet证书的过期时间(同(2))

3.5 备份相关证书文件的目录

(很重要,养成备份好习惯,证书废掉集群就要重新安装了)

cp -r /etc/kubernetes/ /tmp/backup/ # 静态pods配置以及证书
cp -r /var/lib/kubelet/pki/ /tmp/backup.crr #证书pem存放目录

3.6 轮换master上证书

[root@master kubernetes]#kubeadm certs renew all

k8s 更换证书,kubernetes,容器,linux

 (借的图,因为我的证书已经更新完了,更新结束才进行的记录)

3.7 再次查看证书过期日期

[root@master kubernetes]#kubeadm certs check-expiration

k8s 更换证书,kubernetes,容器,linux

3.8 查看/etc/kubernetes/pki/证书是否更新了

[root@master kubernetes]#ll -a /etc/kubernetes/pki/

k8s 更换证书,kubernetes,容器,linux

当前kubernetes各组件所使用的kubeconfig在/etc/kubernetes/里: 

[root@master kubernetes]#ll -a /etc/kubernetes/

k8s 更换证书,kubernetes,容器,linux

3.9 移除conf文件

[root@master kubernetes]#rm -rf /etc/kubernetes/*.conf
[root@master kubernetes]#ls

3.10 重新生成kubeconfig文件

#注意版本号
[root@master kubernetes]#kubeadm init --kubernetes-version=v1.23.4 phase kubeconfig all

3.11 查看是否生成出来了新的配置文件

[root@master kubernetes]# ll -a /etc/kubernetes/

所需要的kubeconfig文件,就是上面的kubelet.conf。

3.12 重新拷贝管理员所用的新的kubeconfig文件

#备份下/root/.kube/config 文件:
cp /root/.kube/config /tmp/kube.old/config
#替换:
[root@master kubernetes]# cp /etc/kubernetes/admin.conf ~/.kube/config

3.13 重启kube-scheduler

[root@master kubernetes]# docker ps -a | grep kube-scheduler | awk ‘{print $1}’
[root@master kubernetes]# docker rm -f 上述容器

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

4 轮换kubelet证书

4.1 轮换master上的kubelet证书

#查看kubelet当前所使用的证书
[root@master kubernetes]# ll -a /var/lib/kubelet/pki/


#通过kubeadm 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/

4.1.1 在master上查看证书签名请求(简称为CSR)

[root@master kubernetes]# kubectl get csr

#我的报的是“No Resource Found”,目前看来是不影响使用的,看其他人的是有信息的,不清楚具体原因。


[root@master kubernetes]# kubectl certificate approve csr-vg9bd
certificatesigningrequest.certificates.k8s.io/csr-vg9bd approved(未操作该步骤)

4.1.2 查看当前kubelet证书的过期时间

[root@master kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not


#PS:未过期的话应该是可以不处理的,我当时查看kubelet的证书时间还没过期,所以没有操作证书替换

k8s 更换证书,kubernetes,容器,linux

 4.2 轮换node上的kubelet证书

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

#在master上生成worker所需要的kubelet.conf临时放在/tmp下
[root@master tmp]# mkdir -p /tmp/worker

#生成node1所需要的kubelet.conf文件。注意更改成自己的信息
[root@master worker]# kubeadm init --kubernetes-version=v1.23.4 phase kubeconfig kubelet --node-name node1 --kubeconfig-dir /tmp/worker/
#[kubeconfig] Writing “kubelet.conf” kubeconfig file

#node1(192.168.0.191)上的/etc/kubernetes/目录里覆盖原来的kubelet.conf。先备份原先node1的kubelet.conf文件:
[root@node1 kubernetes]# mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubeletconf.bak

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

4.2.2 切换到node1,重启kubelet 

[root@node1 kubernetes]# systemctl restart kubelet


#再次查看证书
[root@node1 kubernetes]# ll -a /var/lib/kubelet/pki/


#查看kubelet证书的过期时间。
[root@node1 kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not


#切换到master(192.168.0.190)上,查看CSR。(未操作)
[root@master worker]# kubectl get csr

其他节点同上操作。

5 重启集群

reboot

修改配置之后记得重启就行,大部分时候重启能解决很多问题~~

6 后遗症

如果容器不能自动调度,在节点少的情况下尝试手动分配各节点,之后就可以进行调度了,具体原因还不太清楚。

如果更新证书后还有之前的任务容器,看着像在运行,实际没有工作,可以用命令行删除该容器,或在k8s里清理掉名称空间,防止垃圾数据造成容器无法重新启动。文章来源地址https://www.toymoban.com/news/detail-558754.html

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

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

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

相关文章

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

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

    2024年02月14日
    浏览(50)
  • K8s Token 过期解决方案(Kubeadm)

    Token 是 Node 节点用来连接 Master 节点的令牌字串,它和 CA 证书的 Hash 值是把一台 Node 节点加入到 K8s 集群时使用的凭证。如下图所示: 在 K8s 1.8 之后,默认生成的 Token 有效期只有 24 小时,过期后 Token 将不可用,如果想新的 Node 节点加入 K8s 集群,则需重新生成新的 Token。生

    2024年02月13日
    浏览(37)
  • K8S集群Token过期处理方法以及Kubectl命令无法使用的问题解决

    使用Kubeadm方式部署的K8S集群,在初始化的时候生成的Token的有效期为1天,当过期之后Token就无法使用了,也就意味着,在Node节点执行 kubeadm join 命令加入K8S集群时就会失败,可以通过下面的方法重新生成Token。 1)创建Token

    2024年02月16日
    浏览(39)
  • K8S学习指南(49)-k8s的证书管理

    Kubernetes(K8s)是一款开源的容器编排平台,具有强大的集群管理和安全机制。在Kubernetes集群中,证书管理是一个关键的安全组成部分,用于保障集群通信的安全性和可信度。本文将深入讨论Kubernetes中的证书管理,包括证书的生成、颁发、续期以及如何在实际应用中进行合理

    2024年01月17日
    浏览(41)
  • k8s coredns 一直是pending状态的解决办法

    使用kubectl get pods -n kube-system 查看如下  coredns 一直是pending 。 经查阅资料发现coredns 最大可能是缺少网络插件导致,本文选择kube-flannel.yml方式来安装 创建文件 kube-flannel.yml,将下面内容复制并保存 执行  kubectl apply -f kube-flannel.yml 再次运行 kubectl  get pods -n kube-system 查看 

    2024年02月15日
    浏览(48)
  • k8s node节点加入集群,token过期

    1、master01节点执行  kubeadm token create --print-join-command 2、执行命令 kubeadm join 192.168.0.236:16443 --token qucd8q.hsfq4a1afluzaky3 --discovery-token-ca-cert-hash sha256:92175a356db070deb2ddd3823e288e3005a4baeec9b68580dcc11ce4d3767195 3、查看node02节点是否加入集群

    2024年01月18日
    浏览(46)
  • k8s+kubeedge+sedna安装全套流程+避坑指南+解决办法

    最近在学习边缘计算要用到kubeedge,安装了好多次总会遇到各种各样的问题,因此在这里一一列出,以方便下次安装。则里面可能出错的地方太多,如果有问题,请私信联系。 节点 IP 环境 软件 云端节点 172.23.70.235 Centos7(2核4g) kubernetes+cloudcore 边端节点 172.23.70.34 Centos7(2核4g)

    2024年02月02日
    浏览(47)
  • k8s集群namespace一直处于Terminating状态不释放解决办法

    Kubernetes中namespace有两种常见的状态,即Active和Terminating状态,其中Terminating状态一般会比较少见,当对应的命名空间下还存在运行的资源,但该命名空间被删除时才会出现所谓的Terminating状态,这种情况下只要等待Kubernetes本身将命名空间下的资源回收后,该命名空间将会被系

    2024年02月11日
    浏览(36)
  • 记一次k8s取证检材过期的恢复

    复盘盘古石k8s的时候碰到了证书过期的问题,在此记录解决方法 报错信息: 192.168.91.171:6443 was refused - did you specify the right host or port? 或 master节点运行 node节点运行 至此完事!!

    2024年04月15日
    浏览(47)
  • K8S 证书详解(认证)

    在 Kube-apiserver 中提供了很多认证方式,其中最常用的就是 TLS 认证,当然也有 BootstrapToken,BasicAuth 认证等,只要有一个认证通过,那么 Kube-apiserver 即认为认证通过。下面就主要讲解 TLS 认证。 如果你是使用 kubeadm 安装的 Kubernetes, 则会自动生成集群所需的证书。但是如果是

    2024年02月08日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包