#作者:任少近

文章目录

  • 查看kubelet证书
    • 查看kubelet当前所使用的证书
  • 更换 node上的kubelet证书
    • 生成node1所需要的kubelet.conf文件
    • 生成node2所需要的kubelet.conf文件
    • 查看csr
  • 更新 ~/.kube/config 文件
  • 重启相关组件

查看kubelet证书

以上少了kubelet的证书,kubelet证书该如何查看?通过openssl x509查看证书日期​

[root@k8s-master pki]#openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep NotValidityNot Before: May 1 07:59:28 2024 GMTNot After 	: May 1 07:59:28 2025 GMT

以上表示过期

查看kubelet当前所使用的证书

[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
-rw-------. 1 root root 1114 Jun 24 15:34 kubelet-client-2025-06-24-15-34-28.pem
lrwxrwxrwx. 1 root root   59 Jun 24 15:34 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2025-06-24-15-34-28.pem
-rw-r--r--. 1 root root 2266 Jun 19  2024 kubelet.crt
-rw-------. 1 root root 1679 Jun 19  2024 kubelet.key
这里kubelet-client-2025-06-24-15-34-28.pem是新颁发的证书。
此时kubelet-client-current.pem是软连接到kubelet-client-2025-06-24-15-34-28.pem的。#通过kubeadm certs renew all更新的k8s 证数,是不会更新kubelet.conf的证书的。
#因为前面已经重新生成了kubelet.conf,现在重启kubelet。
[root@master kubernetes]# systemctl restart kubelet[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
在master上查看证书签名请求(简称为CSR),并批准此CSR
[root@k8s-master kubernetes]# kubectl get csr
NAME        AGE   SIGNERNAME                                    REQUESTOR                REQUESTEDDURATION   CONDITION
csr-rv2vx   23m   kubernetes.io/kube-apiserver-client-kubelet   system:node:k8s-master   <none>              Approved,Issued#批准次CSR
[root@k8s-master kubernetes]# kubectl certificate approve csr-rv2vx (也可不需要执行此步骤)
certificatesigningrequest.certificates.k8s.io/csr-rv2vx approved 

在这里插入图片描述
查看当前kubelet证书的过期时间,这里显示过期时间到明年的2026年6月24日,已经是一年期间了,表示已成功更新证书

[root@k8s-master kubernetes]#  openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep NotNot Before: Jun 24 07:29:28 2025 GMTNot After : Jun 24 07:29:28 2026 GMT

更换 node上的kubelet证书

查看node1、node2上的kubelet证书,为老版的证书,可以看到是去年2024年6月份的证书

[root@k8s-master ansiable-book]# ansible k8s_node -m shell -a "ls -al /var/lib/kubelet/pki" -i host.yaml --limit '11.0.1.111,11.0.1.112'
11.0.1.111 | CHANGED | rc=0 >>
total 12
drwxr-xr-x. 2 root root  124 Jun 19  2024 .
drwx------. 8 root root  208 Jun 19  2024 ..
-rw-------. 1 root root 1114 Jun 19  2024 kubelet-client-2024-06-19-23-26-37.pem
lrwxrwxrwx. 1 root root   59 Jun 19  2024 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2024-06-19-23-26-37.pem
-rw-r--r--. 1 root root 2258 Jun 19  2024 kubelet.crt
-rw-------. 1 root root 1679 Jun 19  2024 kubelet.key
11.0.1.112 | CHANGED | rc=0 >>
total 12
drwxr-xr-x. 2 root root  124 Jun 19  2024 .
drwx------. 8 root root  208 Jun 19  2024 ..
-rw-------. 1 root root 1114 Jun 19  2024 kubelet-client-2024-06-19-23-26-54.pem
lrwxrwxrwx. 1 root root   59 Jun 19  2024 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2024-06-19-23-26-54.pem
-rw-r--r--. 1 root root 2258 Jun 19  2024 kubelet.crt
-rw-------. 1 root root 1679 Jun 19  2024 kubelet.key

在这里插入图片描述

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

#在master创建临时node1所需要的kubelet.conf到目录
[root@k8s-master]# mkdir -p /node1
#生成k8s-node1所需要的kubelet.conf文件。注意更改成自己的信息
[root@k8s-master ~]# kubeadm init --kubernetes-version=v1.23.17 phase kubeconfig kubelet --node-name k8s-node1 --kubeconfig-dir node1/
[kubeconfig] Writing "kubelet.conf" kubeconfig file#到node1,对/etc/kubernetes/目录里覆盖原来的kubelet.conf。先备份原先node1的kubelet.conf文件:
[root@k8s-node1 ~]# cp -a /etc/kubernetes/ /etc/kubernetes.bak20250623到master上执行
[root@k8s-master node1]# scp kubelet.conf root@k8s-node1:/etc/kubernetes到node1上,重启kubelet
[root@k8s-node1 kubernetes]# systemctl restart kubelet
[root@k8s-node1 kubernetes]# systemctl status kubelet

如下图,node1上的kubelet正常运行,且无任何异常信息
在这里插入图片描述

查看csr

[root@k8s-master ~]# kubectl get csr
NAME        AGE     SIGNERNAME                                    REQUESTOR                REQUESTEDDURATION   CONDITION
csr-8d7fh   11m     kubernetes.io/kube-apiserver-client-kubelet   system:node:k8s-node1    <none>              Approved,Issued
csr-rv2vx   76m     kubernetes.io/kube-apiserver-client-kubelet   system:node:k8s-master   <none>              Approved,Issued

生成node2所需要的kubelet.conf文件

#在master创建临时node2所需要的kubelet.conf到目录
[root@k8s-master]# mkdir -p /node2
#生成k8s-node2所需要的kubelet.conf文件。注意更改成自己的信息
[root@k8s-master ~]# kubeadm init --kubernetes-version=v1.23.17 phase kubeconfig kubelet --node-name k8s-node2 --kubeconfig-dir node2/
[kubeconfig] Writing "kubelet.conf" kubeconfig file#到node2,对/etc/kubernetes/目录里覆盖原来的kubelet.conf。先备份原先node1的kubelet.conf文件:
[root@k8s-node2 ~]# cp -a /etc/kubernetes/ /etc/kubernetes.bak20250623到master上执行
[root@k8s-master node2]# scp kubelet.conf root@k8s-node2:/etc/kubernetes到node2上,重启kubelet
[root@k8s-node2 kubernetes]# systemctl restart kubelet
[root@k8s-node2 kubernetes]# systemctl status kubelet

如下图,node2上的kubelet正常运行,且无任何异常信息
在这里插入图片描述

查看csr

在这里插入图片描述
看到集群:
在这里插入图片描述
在这里插入图片描述

更新 ~/.kube/config 文件

~/.kube/config 文件充当 Kubernetes 集群的配置文件,主要用于保存集群访问的相关信息。它包含了与 Kubernetes API 服务器通信所需的各种细节,例如服务器地址、所使用的上下文(context)、认证信息(比如证书)等。通过维护这个文件,用户能够利用 kubectl 命令行工具来与 Kubernetes 集群进行有效的互动和管理。简而言之,该文件是连接和操作 Kubernetes 集群的关键凭证,确保了用户可以顺利执行各种集群管理和应用部署任务。
mv /root/.kube/config /root/.kube/config.old
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
hown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config
chmod 644 $HOME/.kube/config

重启相关组件

这一步我们查看etcd已经起来了,
[root@k8s-master ~]# kubectl get pod -A |grep etcd kube-system etcd-k8s-master 1/1 Running 19 (22d ago) 2y11d [root@k8s-master ~]# kubectl -n kube-system delete pod etcd-k8s-master
[root@k8s-master ~]# kubectl get pod -A -w |grep etcd kube-system etcd-k8s-master 1/1 Running 19 (22d ago) 14s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86304.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86304.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/86304.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI智能体长期记忆系统架构设计:从认知模型到生产实践

1 长期记忆:AI智能体的认知基石 1.1 人类记忆与AI记忆的类比 #mermaid-svg-VIPKAFe7VgN4UHFA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-VIPKAFe7VgN4UHFA .error-icon{fill:#552222;}#mermaid-svg-VIPKAFe7V…

快速上手:利用音频大模型与Java提取视频文案

文章目录 1、前言2、需求说明2.1 需求说明2.2 数据准备 3、功能实现3.1 使用视频理解大模型能力3.1.1 三方平台视频在线链接解析3.1.2 三方平台视频内网链接解析3.1.3 三方平台视频转存本地服务 3.2 使用音频识别大模型能力3.2.1 三方平台视频在线链接解析3.2.2 三方平台视频详…

LLM复杂记忆存储-多会话隔离案例实战

导读&#xff1a;在多用户并发的对话系统中&#xff0c;会话隔离问题往往成为开发者面临的技术难题。当数千个用户同时与AI助手交互时&#xff0c;如何确保每个用户的对话历史完全独立&#xff0c;避免数据混淆和隐私泄露&#xff1f; 本文深入剖析了基于RunnableWithMessageHi…

【PX4-AutoPilot教程-TIPS】PX4系统命令行控制台ConsolesShells常用命令(持续更新)

PX4系统命令行控制台 Consoles & Shells 常用命令 查看每个应用程序的堆栈使用情况获取所有可用命令和APP的列表应用程序启动、停止和状态查询查看本地文件系统查看剩余的可用RAM查看工作队列中正在运行的内容以及运行速率查看特定的uORB话题调试uORB话题进行模式切换和故障…

国内优秀wordpress主题推荐

在国内&#xff0c;WordPress 主题市场虽然不如国外那样庞大&#xff0c;但依然有许多优秀且适合中国用户需求的主题。以下是一些经过评估和推荐的国内优秀WordPress主题&#xff0c;涵盖不同类型的网站需求&#xff0c;如博客、企业官网、资源站、社区论坛等。 WP汉主题 WP汉…

第 6 章:进阶话题

第 6 章&#xff1a;进阶话题 过拟合vs欠拟合&#xff1a;模型复杂度和泛化能力的关系 在前面的章节中&#xff0c;我们已经学习了神经网络的基础知识、常见架构和基本训练流程。然而&#xff0c;在实际的深度学习项目中&#xff0c;仅仅掌握这些基础知识是不够的。我们还需要…

4.2_1朴素模式匹配算法

知识总览&#xff1a; 什么是字符串的模式匹配&#xff1a; 主串&#xff1a;想从该串获取结果的串 模式串&#xff1a;想搜索的内容&#xff0c;不一定在主串中能搜到&#xff0c;子串一定能在主串中搜到 字符串模式匹配&#xff1a;在主串找模式串并返回找到的第一个模式串…

华为云Flexus+DeepSeek征文|华为云ModelArts搭建Dify-LLM应用开发平台(AI智能选股大模型)

前言 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术在金融领域的应用愈发广泛&#xff0c;其中 AI 智能选股大模型备受关注。为了构建高效且精准的 AI 智能选股大模型&#xff0c;选择合适的开发平台和工具至关重要。华为云 ModelArts 作为一款面向 AI …

C4.5算法深度解析:决策树进化的里程碑

C4.5是机器学习史上最经典的算法之一&#xff0c;由ID3之父Ross Quinlan在1993年提出。作为ID3的革命性升级&#xff0c;它不仅解决了前代的核心缺陷&#xff0c;更开创了连续特征处理和剪枝技术的先河&#xff0c;成为现代决策树的奠基之作。 本文由「大千AI助手」原创发布&am…

leetcode 65

#include <string> #include <vector> #include <unordered_map> using namespace std;class Solution { public:bool isNumber(string s) {// 定义状态转移表vector<unordered_map<char, int>> states {{{ , 0}, {s, 1}, {d, 2}, {., 4}}, // …

微服务(nacos+myibatis)中如何在一个模块调用多数据库源的一种方案

#nacos配置默认数据库 spring.datasource.typecom.alibaba.druid.pool.DruidDataSource spring.datasource.driverNamecom.mysql.jdbc.Driver #默认数据库名 master spring.datasource.dynamic.primarymaster spring.datasource.dynamic.strictfalse spring.datasource.d…

高标准通信国际接轨,Ethercat与PROFINET网关实现全自动化生产线

在呼和浩特&#xff0c;集成商以其先进的食品饮料行业解决方案&#xff0c;为乳制品行业打造了一个智能化工厂的典范。这个工厂的核心是PROFINET全集成自动化&#xff08;TIA&#xff09;&#xff0c;它通过SIMATIC S7-1200 PLC和ethercat系统&#xff0c;构建了一个强大的PROF…

Netty 引用计数抽象类 AbstractReferenceCountedByteBuf 详解

核心类图 ----------------------------- ---------------------------------- | ReferenceCountUpdater | | AbstractReferenceCountedByteBuf | | <T extends ReferenceCounted>| | (extends AbstractByteBuf) | ----------…

用Python做一个手机镜头

文章目录 设置光学参数添加光学器件 设置光学参数 官方文档&#xff1a;设计手机镜头 rayoptics中提供了OpticalModel类&#xff0c;可用于创建光学模型对象。OpticalModel类中的【optical_spec】成员&#xff0c;是一个OpticalSpecs对象&#xff0c;可用于指定光圈、视野、光…

16.1 Python应用容器化终极指南:Dockerfile多阶段构建与安全优化实战

Python应用容器化终极指南:Dockerfile多阶段构建与安全优化实战 #mermaid-svg-6Yor3ONhmPaQAcY6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6Yor3ONhmPaQAcY6 .error-icon{fill:#552222;}#mermaid-svg-6Yor3ON…

基于SpringBoot + Vue打造的画师约稿平台实现

概述 基于SpringBoot Vue打造的画师约稿平台&#xff0c;该平台设计精美、功能完善&#xff0c;无论是想要搭建类似平台的开发者&#xff0c;还是对画师约稿系统感兴趣的人士&#xff0c;都能从中获取有价值的信息。 主要内容 ​​用户端功能​​&#xff1a; 如图所示&…

杰理-耳机-可视化sdk-最大音量提示音-7016G

杰理-耳机-可视化sdk-最大音量提示音 1.音量最大的时候发出消息 2.通过 MSG_FROM_AUDIO 进行发送 3.创建地方接收&#xff0c;并且播放提示音 学习q群:187115320

抖音图文带货权限怎么开通

在这个数字化营销蓬勃发展的时代&#xff0c;抖音作为一个流量巨大的平台&#xff0c;为广大创作者和商家提供了丰富的变现途径。其中&#xff0c;图文带货权限就是一个有效的拓宽变现能力的一个渠道。 那么&#xff0c;如何才能开通抖音的图文带货功能呢&#xff1f; 开通抖…

80、指标监控-Boot Admin Server

80、指标监控-Boot Admin Server Boot Admin Server是一个用于监控和管理Spring Boot应用程序的开源工具&#xff0c;以下是其相关介绍&#xff1a; #### 主要功能 - **应用状态监控** - 显示应用的在线状态、启动时间、运行时长等基本信息。 - 监控JVM指标&#xff0c;如内存…

Linux系统之Nginx反向代理与缓存

目录 一、正向代理和反向代理 1.1 正向代理概述 1.1.1 什么是正向代理 1.1.2 正向代理的作用 1.1.3 正向代理的基本格式 1.2 反向代理概述 1.2.1 什么是反向代理 1.2.2 反向代理可实现的功能 1.2.3 反向代理的可用模块 二、配置反向代理 2.1 反向代理配置参数 2.1.…