附025.kubeadm部署Kubernetes更新证书

一 查看证书

提示:由上可知,根证书有效期为10年,其他所有证书有效期为1年。

二 证书类别

由此集群根证书签发的证书有:

提示:kubelet的/var/lib/kubelet/config.yaml配置文件中一般不会明确指定服务端证书,而是只指定 ca 根证书, 让 kubelet 根据本地主机信息自动生成服务端证书并保存到配置的cert-dir文件夹中。

由此汇聚层根证书签发的证书有:

由此etcd根证书签发的证书有:

Serveice Account密钥对仅提供给 kube-controller-manager 使用. kube-controller-manager 通过 sa.key 对 token 进行签名, master 节点通过公钥 sa.pub 进行签名的验证。

延伸:API Server身份验证过程:

API Server的authenticating环节支持多种身份校验方式:client cert、bearer token、static password auth等,这些方式中只要有一种方式通过authenticating(Kubernetes API Server会逐个方式尝试),那么身份校验就会通过。

一旦API Server发现client发起的request使用的是service account token的方式,API Server就会自动采用signed bearer token方式进行身份校验。而request则使用携带的service account token参与验证。该token是API Server在创建service account时用API server启动参数:–service-account-key-file的值签署(sign)生成的。如果–service-account-key-file未传入任何值,那么将默认使用–tls-private-key-file的值,即API Server的私钥(server.key)。

通过authenticating后,API Server将根据Pod username所在的group:system:serviceaccounts和system:serviceaccounts:(NAMESPACE)的权限对其进行authority 和admission control两个环节的处理。在这两个环节中,cluster管理员可以对service account的权限进行细化设置。

kubeadm 创建的集群,kube-proxy、flannel、coreDNS是以 pod 形式运行的,在 pod 中,直接使用 service account 与 kube-apiserver 进行认证,此时就不需要再单独为 kube-proxy 创建证书。

三 更新证书方法一

提示:此方式采用kubeadm默认延期1年时间的策略,若要自定义更长时间,如100年,参考步骤四。

提示:由help可知,证书更新可针对单个证书更新。

提示:更新操作需要在所有master节点执行。

在三台Master上执行重启kube-apiserver、kube-controller、kube-scheduler、etcd这4个容器,以便使证书生效。

提示:启用操作需要在所有master节点执行。

四 更新证书方法二

提示:此方式采用编译kubeadm源码,源码中自定义证书时间,如100年。

提示:ca证书最大时间限定为100年,若要将最大时限也延长,可在cert.go中修改如下maxAge值:

maxAge := time.Hour * 24 * 365 * 10

提示:若要编译其他命令,可参考如下:

# 编译kubelet # make all WHAT=cmd/kubelet GOFLAGS=-v # 编译kubectl # make all WHAT=cmd/kubectl GOFLAGS=-v

#编译完命令在 _output/bin/kubeadm 目录下,

#其中bin是使用了软连接

#真实路径是_output/local/bin/linux/amd64/kubeadm

提示:更新操作需要在所有master节点执行。

所有根证书:ca、etcd-ca、front-proxy-ca只有在init初始化的时候才会更新时间,因此建议对于kubeadm部署Kubernetes,可以在初始化之前使用编译的方式将证书设置为更长时间,如100年。

在三台Master上执行重启kube-apiserver、kube-controller、kube-scheduler、etcd这4个容器,以便使证书生效。

参考3.3即可。

Original: https://www.cnblogs.com/itzgr/p/13370185.html
Author: 木二
Title: 附025.kubeadm部署Kubernetes更新证书

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607231/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 深入理解Java类加载机制,再也不用死记硬背了

    谈谈”会”的三个层次 在《说透分布式事务》中,我举例里说明了会与会的差别。对一门语言的学习,这里谈谈我理解的”会”的三个层次: 第一…

    Linux 2023年6月14日
    0105
  • 微信小程序开发(1)

    微信小程序开发(1) 微信小程序开发(1) 代码结构与基本配置 代码结构与基本配置 基本HelloWorld创建 开发框架——基本构成 微信开发者工具 版本控制 WXML wxml…

    Linux 2023年6月8日
    0108
  • RabbitMQ知识简单理解

    官网链接:http://next.rabbitmq.com/getstarted.html 官网给出了每种工作模式的实例代码,可以参考其中的实现 一、RabbitMQ整体架构图 二…

    Linux 2023年6月14日
    0119
  • 【Redis】单线程理解及可能影响性能的操作

    一. Redis的单线程 二. 可能影响单线程性能的操作 1. bigKey操作 2. 复杂命令 3. 大量key集中过期 4. 淘汰策略 5. 主从全量同步生成RDB 6. AO…

    Linux 2023年5月28日
    0140
  • Java基础系列–03_Java中的方法描述

    Java的方法(函数)的描述 方法(1)方法的定义:就是完成特定功能的代码块。注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。(2)格式:修饰符 返回值类型 方法…

    Linux 2023年6月7日
    0122
  • 数据转换-整数字节数组

    任务详情 任务详情0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 1 参考《GMT 0009-2012 SM2密码算法使用规范》第6节&#…

    Linux 2023年6月8日
    0148
  • SQLI-LABS(Less-2)

    Less-2(GET-Error based-Intiger based) 打开 Less-2页面,可以看到页面中间有一句 Please input the ID as param…

    Linux 2023年6月6日
    093
  • 工程课Linux第一节笔记

    上课笔记 文件系统结构 /根目录 /bin/ 存放系统命令,普通用户与root都可以执行 /etc/ 配置文件保存位置 /lib/ 系统调用的函数库保存位置 /var/ 目录用于存…

    Linux 2023年6月6日
    086
  • Linux常用命令总结

    Linux常用命令总结 关机 & 重启&注销 常用命令 作用 shutdown -h now 即刻关机 shutdown -h 5 5分钟后关机 shutdown …

    Linux 2023年6月7日
    0106
  • QT获取linux下的当前用户名

    故事背景:客户端启动的时候需要加载机器/home/xx/test.jpg的图片作为背景图,但是有的机器用户名叫AAA,有的机器名叫BBB,所以我需要获取当前用户的home目录 技术…

    Linux 2023年6月13日
    0119
  • css中*{}和*html,body{}的区别

    css里面定义*{padding:0px;margin: 0px;} 相当于选择器,代表html所有的元素,包括html标签、body标签等; {}大括号里面写入需要给定的属性和属…

    Linux 2023年6月13日
    095
  • linux设备模型及实例

    1.linux设备模型基本概念 BUS(总线):用于关联设备和驱动,代表一个实际的物理总线(如USB、PCI bus)或虚拟总线(如platform bus),总线会提供与总线相关…

    Linux 2023年6月6日
    0111
  • MySQL — 数据操作语言

    DML 全称 Data Manipulation Language。数据操作语言,用来对数据库表中的数据进行增删改。 插入一条数据 插入多条数据 update &#x886…

    Linux 2023年6月8日
    0111
  • 安卓开发封装处理Retrofit协程请求中的异常

    上篇文章讲解了怎么使用 Kotlin的协程配合 Retrofit发起网络请求,使用也是非常方便,但是在处理请求异常还不是很人性化。这篇文章,我们将处理异常的代码进行封装,以便对异常…

    Linux 2023年6月8日
    0112
  • Linux嵌套目录权限的比较探究

    在/tmp目录下新建一个嵌套目录,名字分别为test_0、test_1、test_2。在test_2目录下新建普通文件,名为tryme。设置test_0和test_2的权限为777…

    Linux 2023年6月7日
    090
  • linux_arch

    由于以前新手开始接触的是ubuntu,然后通过ubuntu又开始了解centos,这俩系统基本是稳定版本可以用作服务器,但是centos的还是居多,一来比较接近redhat;但是这…

    Linux 2023年6月14日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球