k8s v1.16.3,Unable to connect to the server: x509: certificate has expired or is not yet valid
前言
kubernetes版本为v1.16.3
使用 kubelet get node 后报错: x509: certificate has expired or is not yet valid ,提示证书过期。
解决
检查证书何时过期
kubeadm alpha certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
admin.conf Mar 27, 2024 07:41 UTC <invalid> no
apiserver Mar 27, 2024 07:41 UTC <invalid> no
apiserver-etcd-client Mar 27, 2024 07:41 UTC <invalid> no
apiserver-kubelet-client Mar 27, 2024 07:41 UTC <invalid> no
controller-manager.conf Mar 27, 2024 07:41 UTC <invalid> no
etcd-healthcheck-client Mar 27, 2024 07:41 UTC <invalid> no
etcd-peer Mar 27, 2024 07:41 UTC <invalid> no
etcd-server Mar 27, 2024 07:41 UTC <invalid> no
front-proxy-client Mar 27, 2024 07:41 UTC <invalid> no
scheduler.conf Mar 27, 2024 07:41 UTC <invalid> no
# 备份 kubernetes配置
cp -r /etc/kubernetes /etc/kubernetes_bak
kubeadm alpha certs renew:可以使用 all 子命令来续订所有 Kubernetes 证书,也可以选择性地续订部分证书 kubeadm alpha certs renew --help
- all:更新所有可用证书,一般可以直接使用这个更新所有。
- apiserver:单独更新服务 Kubernetes API 的证书,相当于针对单个组件进行生成。
- apiserver-etcd-client:更新 apiserver 用来访问 etcd 的证书。
- 其它都类似
kubeadm alpha certs renew all
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
此时所有证书都已重新生成,在 /etc/kubernetes/pki 下。/etc/kubernetes/admin.conf、/etc/kubernetes/controller-manager.conf、/etc/kubernetes/scheduler.conf 也已经更新了。
再次查看证书时间就延续了一年:
kubeadm alpha certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
admin.conf Mar 27, 2025 10:23 UTC 364d no
apiserver Mar 27, 2025 10:23 UTC 364d no
apiserver-etcd-client Mar 27, 2025 10:23 UTC 364d no
apiserver-kubelet-client Mar 27, 2025 10:23 UTC 364d no
controller-manager.conf Mar 27, 2025 10:23 UTC 364d no
etcd-healthcheck-client Mar 27, 2025 10:23 UTC 364d no
etcd-peer Mar 27, 2025 10:23 UTC 364d no
etcd-server Mar 27, 2025 10:23 UTC 364d no
front-proxy-client Mar 27, 2025 10:23 UTC 364d no
scheduler.conf Mar 27, 2025 10:23 UTC 364d no
如果容器服务使用的是 Docker,为了让证书生效,可以使用以下命令对涉及到证书使用的几个服务进行重启:
docker ps | grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd' | awk -F ' ' '{print $1}' | xargs docker restart
或者重启 docker服务:systemctl restart docker
没有更新的文件就只有 /etc/kubernetes/kubelet.conf 了,因为 kubeadm 将 kubelet 配置为自动更新证书。 轮换的证书位于目录 /var/lib/kubelet/pki。 要修复过期的 kubelet 客户端证书,请参阅 kubelet 客户端证书轮换失败。当签署的证书即将到期时,kubelet 会使用 Kubernetes API,自动发起新的证书签名请求。 该请求会发生在证书的有效时间剩下 30% 到 10% 之间的任意时间点。 同样地,控制器管理器会自动批准证书请求,并将签署的证书附加到证书签名请求中。 Kubelet 会从 Kubernetes API 取回签署的证书,并将其写入磁盘。 然后它会更新与 Kubernetes API 的连接,使用新的证书重新连接到 Kubernetes API。
在通过 kubeadm init 创建的节点上,在 kubeadm 1.17 版本之前有一个 缺陷,该缺陷使得你必须手动修改 /etc/kubernetes/kubelet.conf 文件的内容。 kubeadm init 操作结束之后,你必须更新 kubelet.conf 文件 将 client-certificate-data 和 client-key-data 改为如下所示的内容 以便使用轮换后的 kubelet 客户端证书:
client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
client-key: /var/lib/kubelet/pki/kubelet-client-current.pem
如果是 1.17 以前的版本,也可以手动调用 kubeadm init phase kubeconfig kubelet 进行证书轮换。需要先把 /etc/kubernetes/kubelet.conf 删掉,使用 kubeadm init phase kubeconfig kubelet 进行重新生成。之后在 systemctl restart kubelet 进行重启。
node节点
这时候把 master 节点上的 $HOME/.kube/config,复制到 node 节点的 $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
这样 所有节点都可以正常使用 kubectl 了
k8s v1.19版本之后,自签证书过期x509: certificate has expired or is not yet valid
说明:
certs renew 使用现有的证书作为属性(Common Name、Organization、SAN 等)的权威来源, 而不是 kubeadm-config ConfigMap。强烈建议使它们保持同步。
kubeadm certs renew 可以更新任何特定的证书,或者使用子命令 all 更新所有的证书,如下所示:
kubeadm certs renew all
k8s v1.16.3,Unable to connect to the server: x509: certificate has expired or is not yet valid的更多相关文章
- Unable to connect to the server: x509: certificate signed by unknown authority
0x00 Problem 在使用二进制搭建 k8s 集群的过程中,使用 kubectl get 等操作时始终显示 x509: certificate signed by unknown authori ...
- lvs+keepalived部署k8s v1.16.4高可用集群
一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...
- Centos7.6部署k8s v1.16.4高可用集群(主备模式)
一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...
- Centos7安装Kubernetes k8s v1.16.0 国内环境
一. 为什么是k8s v1.16.0? 最新版的v1.16.2试过了,一直无法安装完成,安装到kubeadm init那一步执行后,报了很多错,如:node xxx not found等.centos ...
- 解决loadrunner录制时 Request Connection: Remote Server @ 0.0.0.0:80 (Service=?) NOT PROXIED! (REASON: Unable to connect to remote server: rc = -1 , le = 0)问题
环境为win7+ie8+loadrunner11,录制脚本回放查看Recoding log 出现如下错误:[Net An. Error ( 7f8:1340)] Request Connecti ...
- org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within
org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeo ...
- Unable to connect to zookeeper server within timeout: 5000
错误 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error crea ...
- CentOS7图形界面启动报错unable to connect to X server
以前还可以正常启动图形界面,这次启动失败,报错unable to connect to X server 使用的是oracle用户,因为我是在oracle用户下创建的oracle数据库等 解决办法: ...
- Message Unable to connect to SQL Server '(local)'
最近在sql server 加了一些job,但是run job的时候发生了一下错误: ssage Unable to connect to SQL Server '(local)' 问题根源:调用 T ...
- Unable to connect to web server 'IIS Express'(无法连接到Web服务器“IIS Express”)的解决方式-Jexus Manager
在运行微软示例工程eShopOnWeb时候, 在经过一段时间再运行启动报Error "Unable to connect to web server 'IIS Express'" ...
随机推荐
- Qt/C++音视频开发67-保存裸流加入sps/pps信息/支持264/265裸流/转码保存/拉流推流
一.前言 音视频组件除了支持保存MP4文件外,同时还支持保存裸流即264/265文件,以及解码后最原始的yuv文件.在实际使用过程中,会发现部分视频文件保存的裸流文件,并不能直接用播放器播放,查阅资料 ...
- 混合云网络过于复杂?ENS给你全局一张网的极致体验
本文分享自华为云社区<[华为云Stack][大架光临]第19期:混合云网络过于复杂?ENS给你全局一张网的极致体验>,作者:华为云Stack ENS研发团队. 政企IT的混合形态 经过几十 ...
- 推荐 5 个 火火火火 的CMS开源.Net项目
下面推荐5个基于.NetCore开发的CMS开源项目. 一.OrchardCore 基于ASP.NET Core 构建的.模块化和多租户应用程序框架,采用文档数据库,非常高性能,跨平台的系统. 1.跨 ...
- 解决STM32 CubeMX中配置RTC每次上电就会重置的问题
自从有了Cube MX,配置STM32的外设就变得格外简单.不过这次差点踩坑,下载完程序后RTC自动就恢复到了我设置的初始值,重启之后现象依旧. 下面就以上问题简单分析一下代码. /* RTC ini ...
- Diary & Solution Set - 多校度假
目录 \(\mathscr{Summary}\sim6.14\) \(\mathscr{Contest}\) \((3/3)\) \(\mathscr{A}.\) 区间第 \(k\) 小 \(\mat ...
- 深入解析子查询(SUBQUERY):增强 SQL 查询灵活性的强大工具
title: 深入解析子查询(SUBQUERY):增强 SQL 查询灵活性的强大工具 date: 2025/1/12 updated: 2025/1/12 author: cmdragon excer ...
- 学Shiro完结版-2
第四章 INI配置--<跟我学Shiro> 之前章节我们已经接触过一些INI配置规则了,如果大家使用过如Spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即 ...
- 同态加密技术及其在FL/MPC中的应用-洪澄
转载:链接 Pailler是具有一次乘法同态的. Pailler 我好像一直叫的都是 "拍利尔" . 关于定理的证明,参考:Pailler 同态性 安全性 语义安全 DCR问题 简 ...
- 二叉树神级遍历算法:morris遍历算法
morris遍历的实质 建立一种机制,对于没有左子树的节点只到达一次,对于有左子树的节点会到达两次 morris遍历的实现原则 记作当前节点为cur. 如果cur无左孩子,cur向右移动(cur=cu ...
- Linux通配符和转移字符(扩展匹配文件名)、man帮助文档的使用