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

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                                    no
CERTIFICATE 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)[];第二种写法&#xff…...

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和相关店铺做个简单梳理,帮助有需要使用…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...