首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Kubelet证书自动续签(为kubelet配置证书轮换)

编程知识
2024年09月05日 17:52

1、概述

  Kubelet 使用证书进行 Kubernetes API 的认证。 默认情况下,这些证书的签发期限为一年,所以不需要太频繁地进行更新。Kubernetes 包含特性 Kubelet 证书轮换, 在当前证书即将过期时, 将自动生成新的秘钥,并从 Kubernetes API 申请新的证书。 一旦新的证书可用,它将被用于与 Kubernetes API 间的连接认证。

注意: 要求 Kubernetes 1.8.0 或更高的版本。

2、启用客户端证书轮换

Kubelet 进程接收 --rotate-certificates 参数,该参数决定 Kubelet 在当前使用的 证书即将到期时,是否会自动申请新的证书。

kube-controller-manager 进程接收 --cluster-signing-duration 参数 (在 1.19 版本之前为 --experimental-cluster-signing-duration),用来控制签发证书的有效期限。

  • experimental-cluster-signing-duration=87600h0m0s # kubelet客户端证书颁发有效期设置为10
  • feature-gates=RotateKubeletServerCertificate=true # 启用server证书颁发

 注意 1:当前环境是k8s 1.21.5,Kubelet客户端证书轮换功能是默认开启的。

3、理解证书轮换配置

  当 Kubelet 启动时,如被配置为自举(使用 --bootstrap-kubeconfig 参数),Kubelet 会使用其初始证书连接到 Kubernetes API ,并发送证书签名的请求。 可以通过以下方式查看证书签名请求的状态:
kubectl get csr

  最初,来自节点上 Kubelet 的证书签名请求处于 Pending 状态。 如果证书签名请求满足特定条件, 控制器管理器会自动批准,此时请求会处于 Approved 状态。 接下来,控制器管理器会签署证书, 证书的有效期限由 --cluster-signing-duration 参数指定,签署的证书会被附加到证书签名请求中。

  Kubelet 会从 Kubernetes API 取回签署的证书,并将其写入磁盘,存储位置通过 --cert-dir 参数指定。 然后 Kubelet 会使用新的证书连接到 Kubernetes API。

  当签署的证书即将到期时,Kubelet 会使用 Kubernetes API,自动发起新的证书签名请求。 该请求会发生在证书的有效时间剩下 30% 到 10% 之间的任意时间点。 同样地,控制器管理器会自动批准证书请求,并将签署的证书附加到证书签名请求中。 Kubelet 会从 Kubernetes API 取回签署的证书,并将其写入磁盘。 然后它会更新与 Kubernetes API 的连接,使用新的证书重新连接到 Kubernetes API。

注意 1:Kubelet自举模式

  在 Kubernetes 集群的安全配置中,组件之间的通信需要进行认证和授权,以确保集群的安全。Kubelet 作为节点上的关键组件,需要与 Kubernetes API Server(API 服务器)进行安全通信。这种通信通常通过 TLS 证书来实现加密和身份验证。然而,在集群初始化或节点加入集群的过程中,Kubelet 可能还没有被颁发有效的 TLS 证书。这时,Kubelet 可以采用自举(Bootstrap)机制来获取证书。自举机制允许 Kubelet 使用一个临时的、低权限的证书(或引导令牌token;或 kubeconfig 文件,其中包含了连接 API 服务器的配置信息,包括证书和密钥)来启动,并请求 API 服务器为其颁发一个长期有效的、权限更高的证书。

  当 Kubelet 启动时,如果它被配置为自举(这通常通过 --bootstrap-kubeconfig 参数实现,该参数指定了包含临时证书和 API 服务器地址的 kubeconfig 文件),它会使用这个文件中的初始证书来连接到 Kubernetes API 服务器。一旦连接成功,Kubelet 会向 API 服务器发送一个证书签名请求(Certificate Signing Request, CSR)。这个 CSR 包含了 Kubelet 的身份信息以及它希望获得的证书的信息(如有效期、用途等)。

  API 服务器收到这个 CSR 后,创建CSR资源对象,控制器会根据集群的证书颁发策略(如是否允许自动批准来自特定节点的 CSR)来处理它。如果 CSR 被批准,控制器会使用集群的证书颁发机构(Certificate Authority, CA)来签署这个请求,生成一个新的证书,并将这个证书返回给 Kubelet。Kubelet 收到新证书后,会使用它来替换初始的临时证书,从而以更高的权限和安全性与 API 服务器进行后续的通信。

注意 2:Kubernetes使用CertificateSigningRequest方式签发客户端证书详细步骤参见《Kubernetes客户端认证(三)—— Kubernetes使用CertificateSigningRequest方式签发客户端证书》这篇博文。

4、测试

(1)找一台测试node节点,查看现有客户端证书有效期

[root@member-cluster1-worker1 ~]# cd /var/lib/kubelet/pki/
[root@member-cluster1-worker1 pki]# ls
kubelet-client-2024-07-01-12-00-25.pem  kubelet-client-current.pem  kubelet.crt  kubelet.key
[root@member-cluster1-worker1 pki]#  openssl x509 -in kubelet-client-current.pem -noout -dates
notBefore=Jul  1 03:55:22 2024 GMT
notAfter=Jun 29 03:55:22 2034 GMT

(2)修改服务器时间,模拟kubelet证书即将到期

[root@member-cluster1-worker1 pki]# date
2024年 09月 05日 星期四 18:35:40 CST
[root@member-cluster1-worker1 pki]# date -s "2034-6-22"
2034年 06月 22日 星期四 00:00:00 CST

(3)重启Kubelet服务

[root@member-cluster1-worker1 pki]# systemctl restart kubelet

(4)再次查看证书有效期

注意 1: Kubelet证书的起始时间是由Kube-Controller-Manager所在服务器时间决定的。

注意 2:Kubelet的证书轮换功能是自动的,这里重启Kubelet服务是为了立马查看证书轮换效果。

From:https://www.cnblogs.com/zhangmingcheng/p/18399050
本文地址: http://shuzixingkong.net/article/1770
0评论
提交 加载更多评论
其他文章 005.MinIO-DirectPV分布式多租户存储部署
MinIO部署准备 部署概述 本实验结合Kubernetes进行MinIO部署,实现MinIO于Kubernetes的融合。 minio官方支持通过简单的快速部署,以便于进行基础测试: curl https://raw.githubusercontent.com/minio/docs/master/
005.MinIO-DirectPV分布式多租户存储部署 005.MinIO-DirectPV分布式多租户存储部署 005.MinIO-DirectPV分布式多租户存储部署
lxml官方入门教程(The lxml.etree Tutorial)翻译
lxml官方入门教程(The lxml.etree Tutorial)翻译 说明: 首次发表日期:2024-09-05 官方教程链接: https://lxml.de/tutorial.html 使用KIMI和豆包机翻 水平有限,如有错误请不吝指出 这是一个关于使用lxml.etree处理XML的教
熔断、限流、降级 —— SpringCloud Hystrix
概述 Hystrix 为 微服务架构提供了一整套服务隔离、服务熔断和服务降级的解决方案。它是熔断器的一种实现,主要用于解决微服务架构的高可用及服务雪崩等问题 Hystrix 的特性如下: 服务熔断:Hystrix 熔断器就像家中的安全阀一样,一旦某个服务不可用,熔断器就会直接切断该链路上的请求,避免
熔断、限流、降级 —— SpringCloud Hystrix
通过DashScope API调用将多种模态转换为向量
​ 本文介绍如何通过模型服务灵积DashScope进行多模态向量生成,并入库至向量检索服务DashVector中进行向量检索。
通过DashScope API调用将多种模态转换为向量
1000多天我开发了一个免费的跨浏览器的书签同步、阅读排版、任意网页标注插件
自我介绍 大家好,我是阿浩,一位后端开发工程师,同时也略懂前端技术。业余时间,我开发了这款小工具——《藏趣云》。 我为什么要写这么个工具 需求来源于我自己,因为我是做开发的。我日常都会使用多款浏览器来测试项目,一次需要登录多个账号,寻找各种测试地址链接。之前因为电脑磁盘损坏、重装系统等原因,而且因为
1000多天我开发了一个免费的跨浏览器的书签同步、阅读排版、任意网页标注插件 1000多天我开发了一个免费的跨浏览器的书签同步、阅读排版、任意网页标注插件 1000多天我开发了一个免费的跨浏览器的书签同步、阅读排版、任意网页标注插件
项目经理的时间管理秘籍,你真的了解吗?
前言 深圳大学为何能与985并肩,却尚未踏入“双一流”行列? 在高手如云的中国高等教育界,深圳大学如同一匹黑马,迅速崛起,其综合实力和国际影响力已不逊色于部分985高校。然而,令人好奇的是,这样一所实力派大学,为何至今还未被评为“双一流”高校呢? 1、实力不容小觑 深圳大学,这所年轻的学府,自198
从Workload中优雅隔离Pod
线上集群中,业务跑着跑着,突然发现有个Pod上出现大量错误日志,其他的Pod是正常的,该如何处理呢? 直接删除Pod? 这样不便于保留现场,可能会影响判断问题的根因 让业务方忍一会,先排查下问题? 会被喷死 最好的方案是既让Pod停止接收流量,又保留Pod 思路: 停止接收流量 停止接收流量这个动作
光影精灵10 Win1+Ubuntu18.04 双系统 踩坑记录
前言 第二年准备报名智能车了,当然还是创意组别。刚好买了今年新出的电脑光影精灵10,我想着也给它安一个双系统。但是没想到,相比于之前那个老电脑,新电脑的新硬件和驱动问题远比老电脑麻烦的多。 在经历了一系列踩坑和疯狂查资料之后,加上重装系统N次,终于成功下车。遂把过程记录下来,以备后续不时之需&#12
光影精灵10 Win1+Ubuntu18.04 双系统  踩坑记录