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'" ...
随机推荐
- 龙哥量化:通达信(KT交易师)分时图主图叠加5分钟K线图
股友要求在通达信分时图主图叠加5分钟K线,但是通达信的分时图取不到最高价,最低价等数据,限制非常多. 然后我在KT交易师上写的公式测试成功了,效果如下. 如果您需要公式源码或者代写公式, 请联系我. ...
- Qt编写物联网管理平台43-告警短信转发
一.前言 系统在运行过程中,会实时采集设备的数据,当采集到的数据发生报警后,可以将报警信息以短信的形式发送给指定的管理员(可以是多个),这样管理员就算不在现场,也能第一时间知道哪里发生了报警,可以紧急 ...
- WebSocket从入门到精通,半小时就够!
本文原题"WebSocket:5分钟从入门到精通",作者"程序猿小卡_casper",原文链接见文末参考资料部分.本次收录时有改动. 1.引言 自从HTML5里 ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-11- 标签页(tab)操作 - 下篇 (详细教程)
1.简介 本来按照计划这一系列的文章应该介绍Context和Page两个内容的,但是宏哥看了官方文档和查找资料发现其实和宏哥在Python+Playwright系列文章中的大同小异,差不了多少,再在这 ...
- C#定点执行任务测试案例
定时方法实现类 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text ...
- JavaScript操作DOM元素的classList
在JavaScript中,classList 是一个DOM元素属性,它提供了一组方法来添加.移除和切换元素的类名.classList 属性返回一个 DOMTokenList 集合,表示元素的类名. 这 ...
- Django和FastAPI的比较
在 Python 的 Web 开发领域,Django 和 FastAPI 是两款备受瞩目的框架. 通过对二者的实践与比较,本文总结了它们的特点与适用场景,希望能给开发者在选择时提供参考. 1. 设计理 ...
- 安全可信 | 通过双项测试!TeleDB实力亮剑!
近日,天翼云TeleDB数据库在中国信通院"可信数据库"系列测试的赛道上,一次性跨越"分布式事务型数据库基础能力测试"与"性能测试"的双重大 ...
- Apache Amoro数据湖管理和治理工具部署
一.Amoro介绍 2024 年 3 月 11 日,Amoro 项目顺利通过投票,正式进入 Apache 软件基金会(ASF,Apache Software Foundation)的孵化器,成为 AS ...
- Luogu P9180 [COCI2022-2023#5] Slastičarnica 题解 [ 蓝 ] [ 区间 dp ] [ dp 状态优化 ] [ 前缀和优化 ]
Slastičarnica:非常好的区间 dp 题. 暴力 不难设计出暴力状态:\(dp_{q,i,j}\) 表示进行到第 \(q\) 次操作,剩下区间 \([i,j]\) 是否可行. 直到全部状态都 ...