K8s 证书认知(K8s Certificate Awareness)
K8s 证书认知
在谈起 Kubernetes 证书时,总感觉其涵盖的内容繁多,仿佛千头万绪,让人不知该从何处着手阐述。为了更好地理清思路,本文将对相关内容进行系统的梳理和记录。
1、证书及链路关系
Kubeadm部署的集群,K8s CA证书是10年,其他组件的证书日期是1年,etcd证书日期可以通过配置设置为10年。
-
服务端证书: 服务端证书是安装在服务器端的证书,主要用于服务器向客户端证明自己的合法身份,确保客户端连接到正确的服务器,有效时间一般设置比较长。
-
客户端证书: 客户端证书是安装在客户端的证书,主要用于向服务器证明客户端的身份,确保服务器只接受合法的客户端请求,有效时间相对可以设置短些。
-
CA证书: 服务端或客户端证书都通过CA生成的,Kubeadm安装的集群一般有三套CA证书,一套给etcd、一套给K8s内部使用、一套给聚合层使用,他们都是10年。
-
证书配置一般有三个文件,含CA,证书和私钥(key字样): 证书是验证对方证书有效性,私钥是解密和签名操作。
1.1、etcd证书
通过ps -ef| grep etcd或systemctl status etcd查看etcd配置从而知道证书目录。
链路关系:服务本身、etcd集群节点间和客户端(etcdctl指令和kube-apiserver访问etcd的客户端证书)。
1.2、kubeadm token令牌
当kubeadm init或一个新节点或组件启动时,它可以使用Token向kube-apiserver进行身份认证,一般是24h。可通过kubeadm token create命令生成,kubeadm token list查看。
1.3、kube-apiserver证书
最复杂,需要和多个组件链接认证,通过查看apiserver配置文件,一般在/etc/kubernetes/manifests目录下kube-apiserver.yaml
链路关系:服务本身、客户端证书(kube-apiserver访问etcd、kubelet和front-proxy)。
1.4、kubelet证书
kubelet有客户端证书和服务端证书,客户端证书可以通过设置自动续签。
链路关系:客户端(kubelet访问kube-apiserver,是通过kubeconfig,其中客户端证书和私钥为:kubelet-client-current.pem)、服务端(可以在kube-apiserver和metric-server访问时使用,但一般不会设置)。
1.5、ServiceAccount认证
在K8s集群内部访问kube-apiserver使用的是SA,如pod和kube-proxy访问kube-apiserver。/etc/kubernetes/pki目录下,还有sa.pub和sa.key这两个就是用于sa认证的。这点容易遗漏。
1.6、其他组件证书
像kube-controller-manager、kube-scheduler和kubectl都是通过kubeconfig访问kube-apiserver, 配置文件中包括client-certificate-data 和 client-key-data的客户端证书和密钥。
2、查看证书日期方法(可参考,可不看)
K8s原生方法和openssl方法查看 原生方法:kubeadm certs check-expiration 说明如下:scheduler.conf也显示过期日期,因为文件里面包括证书和密钥,所以也有过期日期。
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linekubeadm certs check-expiration[check-expiration] Reading configuration from the cluster...[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'W0117 15:36:09.319227 21835 utils.go:69] The recommended value for "clusterDNS" in "KubeletConfiguration" is: [10.233.0.10]; the provided value is: [169.254.25.10]CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGEDadmin.conf Dec 25, 2025 05:12 UTC 341d noapiserver Dec 25, 2025 05:12 UTC 341d ca noapiserver-kubelet-client Dec 25, 2025 05:12 UTC 341d ca nocontroller-manager.conf Dec 25, 2025 05:12 UTC 341d nofront-proxy-client Dec 25, 2025 05:12 UTC 341d front-proxy-ca noscheduler.conf Dec 25, 2025 05:12 UTC 341d noCERTIFICATE AUTHORITY EXPIRES RESIDUAL TIME EXTERNALLY MANAGEDca Dec 23, 2034 05:12 UTC 9y nofront-proxy-ca Dec 23, 2034 05:12 UTC 9y no
openssl方法:到证书目录下,要看那个组件选择对应的crt或者pem文件, openssl x509 -in *.crt -noout -text | grep 'Not':
ounter(lineounter(lineounter(lineounter(linecd /etc/kubernetes/pkiopenssl x509 -in apiserver-kubelet-client.crt -noout -text | grep 'Not'Not Before: Dec 25 05:12:35 2024 GMTNot After : Dec 25 05:12:36 2025 GMT
3、证书更新(参考,可不看)
目前大概有三种方法,一种升级、命令更新和编译Kubeadm源码修改。主要分四大类,一个是etcd,一个是kube-apiserver服务端,一个是kubelet客户端,一个是K8s其他组件证书
-
etcd修复,参考之前写过一篇etcd证书过期解决方法。
3,1、kube-apiserver相关证书
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line1、在k8s-master节点执行renew allkubeadm certs renew all --config=/root/kubeadm-config.yaml2、查看更新日期,kubeadm certs check-expiration3、更新kubeconfig文件rm -fr /etc/kubernetes/*.confkubeadm init phase kubeconfig all --config /root/kubeadm-config.yaml4、重启相关pod,包括kube-apiserver、kube-controller-manager和kube-scheduler5、拷贝admin.conf到$HOME/.kube/下
3.2、kubelet证书
若 kubelet 已经配置了证书自动更新,则可略过该步骤,可查看节点 /etc/kubernetes/kubelet.conf 中 client-certificate 和 client-key: 如果为证书路径,则说明当前节点开启了 kubelet 证书自动更新,可略过该步骤; 如果为证书内容,则需要参考该步骤对 kubelet.conf 进行更新。
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 1. 查看 token 是否为空或者过期kubeadm token list# 2. 生成新tokenkubeadm token create# 3. 记录token值替换node节点 /etc/kubernetes/bootstrap-kubelet.conf 中 token# 4. 替换node节点 /etc/kubernetes/bootstrap-kubelet.conf 中 user.token 字段# 5. 删除 /etc/kubernetes/kubelet.confrm -rf /etc/kubernetes/kubelet.conf# 6. 重启kubeletsystemctl restart kubelet# 7. 查看节点状态kubectl get node
3.2.1、配置kubelet证书自动更新
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line1、为 kube-controller-manager和kube-apiserver和kube-schedule 添加 --experimental-cluster-signing-duration 参数(v1.19及以上版本为 --cluster-signing-duration),然后重启2、kubelet配置文件添加参数 rotateCertificates: true(每个node操作)3、获取 kubeadm join 命令,该命令须在 master 节点上执行kubeadm token create --print-join-command4、 利用 kubeadm 重新 bootstrap kubelet(每个node操作)# 移除 /etc/kubernetes/kubelet.confmv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.bak# 注意: 1. 复制自己生成的命令; 2. kubeadm join 后添加 phase kubelet-startkubeadm join phase kubelet-start lb.kubesphere.local:6443 --token lx8w73.nmt255scsz0krakz --discovery-token-ca-cert-hash sha256:55a4ffbf1271bd46d3b2dda2bb716de2a1cc23fb70aa57f241db2ee08f48b715
4、总结
针对证书过期问题,第一要明确那个证书过期再对症下药。通过进入不同证书目录执行openssl指令或K8s原生指令kubeadm certs check-expiration查看哪个组件过期。
-
etcd证书一般10年,不容易过期。
-
kube-apiserver证书一般1年,有问题先排查。
-
kubelet证书一般1年,会自动更新,没有配置自动需要配置自动更新。
相关文章:
K8s 证书认知(K8s Certificate Awareness)
K8s 证书认知 在谈起 Kubernetes 证书时,总感觉其涵盖的内容繁多,仿佛千头万绪,让人不知该从何处着手阐述。为了更好地理清思路,本文将对相关内容进行系统的梳理和记录。 1、证书及链路关系 Kubeadm部署的集群,K8s …...
前x-ai首席科学家karpathy的从零构建ChatGPT视频学习笔记--8000字长图文笔记预警(手打纯干货,通俗易懂)
2025.2.17晚上21:57看完了整个视频,作为一个ai专业的学生虽然每天都在用ai,但是对于其背后的原理却不是那么清楚,而卡帕西的这支视频却让我醍醐灌顶,而且全程听起来很舒服,没有知识强行进入脑子的痛感,在他…...
【智慧校园】分体空调节能监管:打造高效节能的学习环境
随着科技的飞速发展和生活品质的不断提升,人们对于家居和办公环境的舒适度与智能化要求也越来越高。分体空调集中控制系统作为一种先进的空调管理方式,正逐渐成为现代家庭和办公场所的标配,为用户带来更加便捷、高效和节能的空调使用体验。随…...
深度学习-1.简介
Deep Learning - Lecture 1 Introduction to Deep Learning 学习深度学习的动机什么是深度学习什么导致了深度学习的出现模型与理论的发展(软件部分)通用图形处理单元GPU的发展(硬件部分)CPU与GPU计算对比 GPU与CPU的理论FLOPS对…...
【Rust中级教程】1.10. 引用及内部可变性(简单回顾):引用、内部可变性、`Cell`类型及相关操作
喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 这篇文章只对所有权进行简单回顾,想要看完整的所有权系统阐述见【Rust自学】专栏…...
Docker 安装和配置 Nginx 详细图文教程
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...
基于Java+Swing+Mysql实现旅游管理信息系统
基于JavaSwingMysql实现旅游管理信息系统 一、系统介绍二、功能展示1.登陆2.注册3.旅游信息查询4.查看游行团信息5.报名6、报名信息管理 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 用户:登陆、注册、旅游信息查询、查看游行团信息、报名 管理员&a…...
使用 Openpyxl 操作 Excel 文件详解
文章目录 安装安装Python3安装 openpyxl 基础操作1. 引入2. 创建工作簿和工作表3. 写入数据4. 保存工作簿5. 加载已存在的Excel6. 读取单元格的值7. 选择工作表 样式和格式化1. 引入2. 设置字体3. 设置边框4. 填充5. 设置数字格式6. 数据验证7. 公式操作 性能优化1. read_only/…...
统信服务器操作系统V20 1070A 安装docker新版本26.1.4
应用场景: 硬件/整机信息:x86平台、深信服超融合平台 OS版本信息:统信V20 1070a 1.获取docker二进制包 链接: https://pan.baidu.com/s/1SukBlra0mQxvslTfFakzGw?pwd5s5y 提取码: 5s5y tar xvf docker-26.1.4.tgz groupadd docker ch…...
【数据分享】1929-2024年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站…...
python爬虫系列课程1:初识爬虫
python爬虫系列课程1:初识爬虫 一、爬虫的概念二、通用爬虫和自定义爬虫的区别三、开发语言四、爬虫流程一、爬虫的概念 网络爬虫(又被称为网页蜘蛛、网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动抓取互联网信息的程序。原则上,只要是…...
大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?
简介:在人工智能飞速发展的今天,大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作,还是科研辅助、代码生成,大模型的身影无处不在。然而,面对市场上琳琅满目的工具,如何挑选最适合自己的那…...
什么是语料清洗、预训练、指令微调、强化学习、内容安全; 什么是megatron,deepspeed,vllm推理加速框架
什么是语料清洗、预训练、指令微调、强化学习、内容安全 目录 什么是语料清洗、预训练、指令微调、强化学习、内容安全语料清洗预训练指令微调强化学习内容安全什么是megatron,deepspeed,vllm推理加速框架语料清洗 语料清洗是对原始文本数据进行处理的过程,旨在去除数据中的…...
HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
一、前言 作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承…...
【深度学习】预训练和微调概述
预训练和微调概述 1. 预训练和微调的介绍1.1 预训练(Pretraining)1.2 微调(Fine-Tuning) 2. 预训练和微调的区别 预训练和微调是现代深度学习模型训练中的两个关键步骤,它们通常是一个 预训练-微调 (Pretrain-Finetune…...
自动化测试框架搭建-单次接口执行-三部曲
目的 判断接口返回值和提前设置的预期是否一致,从而判断本次测试是否通过 代码步骤设计 第一步:前端调用后端已经写好的POST接口,并传递参数 第二步:后端接收到参数,组装并请求指定接口,保存返回 第三…...
【阮一峰】2.数组
数组 简介 所有成员的类型必须相同,但是成员数量是不确定的。 由于成员数量可以动态变化,所以 TypeScript 不会对数组边界进行检查,越界访问数组并不会报错。 第一种写法: let arr: (number | string)[];第二种写法ÿ…...
DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)
前言 在当今数字化时代,AI编程助手已成为提升开发效率的利器。DeepSeek作为一款强大的AI模型,凭借其出色的性能和开源免费的优势,成为许多开发者的首选。今天,就让我们一起探索如何将DeepSeek接入PyCharm,实现高效、智…...
【Java Card】Applet 使用Shareable进行数据分享以及部分问题处理
文章目录 前言一、定义接口二、server端实现三、client端实现四、遇到的问题 前言 在进行开发时,可能会将业务放到不同的applet中,这时常常会需要进行数据的分享。 比如在一个applet中存储了密钥,而在另一个业务applet中需要进行签名时&…...
国产FPGA开发板选择
FPGA开发板是学习和开发FPGA的重要工具,选择合适的开发板对学习效果和开发效率至关重要。随着国产FPGA的发展,淘宝上的许多FPGA开发板店铺也开始进行国产FPGA的设计和销售,本文将对国产FPGA和相关店铺做个简单梳理,帮助有需要使用…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
