K8S集群有证书的概念,之前一直是使用默认的,默认都是1年和10年的,1年有效期这显然对于生产环境是不合适的,于是调整K8S证书,升级K8S证书有效期为100年。

kubernetes提供了多种安全认证机制,其中对于集群通讯间可采用TLS(https) 双向认证机制,也可采用基于Token或用户名密码的单向tls认证。K8S一般在内网部署,采用私有 IP 地址进行通讯,权威CA只能签署域名证书,我们这里采用自建CA

1基础介绍

想要安全就必须复杂起来,证书是少不了的。在Kubernetes中提供了非常丰富的证书类型,满足各种不同场景的需求。

1.1证书类型

根据认证对象可以将证书分成三类:服务器证书 server cert,客户端证书 client cert,对等证书 peer cert(表示既是 server cert 又是 client cert):

1.client certificate:用于服务端认证客户端,例如 etcdctl、etcd proxy、fleetctl、docker 客户端;

2.server certificate:服务端使用,客户端以此验证服务端身份,例如 docker 服务端、kube-apiserver;

3.peer certificate:双向证书,用于 etcd 集群成员间通信。

1.2证书分类

在说证书之前,先想想作为集群的入口apiserver需要提供那些服务,与那些组件通信,通信的两方可能需要配置证书。与apiserver通信的组件大体可以分为以下几类:

1.client(kubectl,restapi等):普通用户与apiserver之间的通信,对各类资源进行操作;

2.kubelet,kubeproxy:master与node之间的通信;

3.etcd:K8S的存储库;

4.webhook:这里指apiserver提供的admission-webhook,在数据持久化前调用webhook;

5.aggregation layer:扩展apiserver, 需要将自定义的api注册到K8S中,相比CRD性能更新;

6.pod: 在pod中调用apiserver(一般调用为10.254.0.1:433);

7.除了在pod中通过serviceacount认证(当然pod需要认证apiserver的证书),其他几种都需要配置证书

其他集群内组件与apiserver通信的,kubelet/etcd/kube-proxy对应的也可以配置证书。

1.3go语言

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。改写K8S证书有效期就是通过Go语言编译而成

2思路框架

上面已经将K8S证书介绍一遍了,下面来说说本次升级证书需要的思路和操作步骤,方便大家有个整体感。

2.1整体思路

1.安装go环境,下载go1.12.5.linux-amd64.tar.gz并解压;

2.配置go环境变量;

3.重新编译kubernetes,下载并解压kubernetes-1.14.0.zip;

4.编辑cert.go和pki_helpers.go文件,修改为100年;

5.编译生成新的kubernetes;

6.备份原有的配置文件;

7.替换原有的kubeadm;

8.生成新的证书kubeadm alpha certs renew all;

9.验证结果,查看各个证书过期时间。

2.2证书概览

修改之前的所有证书有效时间如下:

注意:3个ca证书默认是10年,目前只有初始化K8S集群之前修改才会生效

2.3调整文件

kubernetes中:

1.staging/src/K8S.io/client-go/util/cert/cert.go

2.cmd/kubeadm/app/util/pkiutil/pki_helpers.go

3更新许可

上面是生成K8S许可的过程,下面开始正式说明更新证书操作步骤,下面先介绍K8S集群已经搭建后,不重置更新许可的方法。

3.1主master

1.检查当前K8S证书有效期,After是证书到期时间;

2.备份原有的配置文件,备份时间自行修改;

3.到/usr/bin目录,上传替换kubeadm;

4.更新证书;

5.再次检查当前K8S证书有效期,查看After时间。

3.2其他master

1.备份原有的配置文件,备份时间自行修改 ;

2.到/usr/bin目录,上传替换kubeadm ;

3.更新证书;

4.检查当前K8S证书有效期,查看After时间。

3.3全部worker

不用操作,了解即可

worker节点只有一个ca证书/etc/kubernetes/pki/ca.crt

1.如果是初始化集群,证书会直接100年

2.如果是已运行的集群,证书是10年

4初始配置

下面开始介绍在搭建K8S集群时就升级证书的方法步骤,这里直接使用已经调整100后的kubeadm文件。

4.1替换kubeadm

1.备份原有的配置文件

2.替换原有的kubeadm

4.2初始化集群

使用init初始化K8S集群:

4.3检查K8S证书

查询所有K8S证书到期时间:

5总结反思

在最初搭建K8S过程中,网上的资料都没有提到K8S还有证书到期的情况,这就导致最开始部署的环境都是1年到期。从这点上说明网上的知识也是不那么权威的,需要我们在其基础上,多思考,多总结,想全面一点。

5.1知识收获

通过本次升级K8S证书有效期,让我对K8S安全部分的理解又深了一层,包括证书的类型,证书的分类,K8S集群一共有多少证书:

先从Etcd算起

1、Etcd对外提供服务,要有一套etcd server证书;

2、Etcd各节点之间进行通信,要有一套etcd peer证书;

3、Kube-APIserver访问Etcd,要有一套etcd client证书;

再算kubernetes

4、Kube-APIserver对外提供服务,要有一套kube-apiserver server证书;

5、kube-scheduler、kube-controller-manager、kube-proxy、kubelet和其他可能用到的组件,需要访问kube-APIserver,要有一套kube-APIserver client证书;

6、kube-controller-manager要生成服务的service account,要有一对用来签署service account的证书(CA证书);

7、kubelet对外提供服务,要有一套kubelet server证书;

8、kube-APIserver需要访问kubelet,要有一套kubelet client证书。

5.2能力提升

上网查一些自己不清楚的知识也是学习的过程,一方面可以对未知事物进行更深入的了解,另一方面还要考虑网上的资料是否全面,通过多思考、多联想,以一个闭环的思路考虑网上信息的可行度。最后在结合自己的知识快速转化融合,这也是快速学习的一个重要方法。

5.3未来规划

首先要先把先前部署的K8S环境都整理处理,一个个进行升级,确保项目的正常运行。其次以后部署的K8S集群都要在初始化时就直接部署证书是100年的,从最开始确保K8S集群运行的稳定性。

后续再有技术预研的工作时,多注意网上查到的资料有多少是可用的,有多少是不完善的,还要从原理上思考,网上资料的是否全面,会不会有遗漏的地方。只有提升了自己的思考格局,才能真正做到能力的提升,否则只会不断的遇到问题,反复调整,被动学习知识和技术。

升级K8S证书有效期为100年操作说明相关推荐

  1. openssl命令查看证书有效期_kubeadm初始化k8s集群延长证书过期时间

    前言 kubeadm初始化k8s集群,签发的CA证书有效期默认是10年,签发的apiserver证书有效期默认是1年,到期之后请求apiserver会报错,使用openssl命令查询相关证书是否到期. ...

  2. kubeadm安装的k8s集群证书有效期过期解决方案

    修改机器时间模拟证书过期,同样如果想生成的证书有效期5年可以设置当前时间为未来5的时间 (date -s "2025-12-30 12:00" ) 1.备份master节点上的/e ...

  3. kubeadm修改默认证书有效期,解决证书过期问题

    kubeadm 修改默认证书有效期 前言 出于安全考虑,k8s 团队推荐定期更新版本,因此kubeadm生成的证书,有效期默认在代码中写死为1年,一旦证书过期,k8s集群将会崩溃,因此,续期 or 升 ...

  4. 【CKA考试笔记】二十、升级k8s

    文章目录 实验环境 一.概述 二.实验 一:更新master (1)更新kubeadm工具 (2)更新kubelet.kubectl (3)重启kubelet (4)恢复此节点 (5)若有多个mast ...

  5. kubeadm集群修改k8s证书时间到99年

    kubeadm集群修改k8s证书时间到99年 kubeadm修改证书时间 (1).查看当前的证书时间 # kubeadm alpha certs check-expiration [check-exp ...

  6. android 监听本机网络请求_fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决...

    一.HTTP协议和HTTPS协议. (1) HTTPS协议=HTTP协议+SSL协议,默认端口:443 (2) HTTP协议(HyperText Transfer Protocol):超文本传输协议. ...

  7. AWS认证解决方案架构师证书有效期是多久?aws认证架构师考什么?

    随着云计算的出现,有许多平台考试为学员提供认证服务,而要想顺利拿到aws证书,需要找一家专业的认证平台.那么AWS认证解决方案架构师证书有效期是多久?aws认证架构师考什么?小编给大家讲一下! 一.什 ...

  8. kubeadm修改证书有效期

    如果更新k8s版本会默认更新证书 检查证书有效期(一部分10年一部分1年) openssl x509 -in apiserver.crt -text -noout 1.go 环境部署 https:// ...

  9. 如何查看域名所对应的证书有效期?

    阅文时长 | 0.02分钟 字数统计 | 33.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『如何查看域名所对应的证书有效期?』 编写人 | SCscHero 编写时间 | 20 ...

最新文章

  1. linux redis 配置详解
  2. 自然语言处理在医学领域的应用
  3. SpringCloud教程-注册中心(Consul)(SpringCloud版本Greenwich.SR4)
  4. ubuntu安装VMware出错
  5. mvcc原理_MVCC原理探究及MySQL源码实现分析
  6. 7.Mysql数据库表引擎与字符集
  7. MyBatis 动态 SQL 底层原理分析
  8. 【超链接】多媒体工具网站
  9. Centos7:dubbo监控中心安装,配置和使用
  10. 【NOI 2001】食物链(种类并查集)
  11. 学习《让UpdatePanel支持文件上传》系列文章的相关链接
  12. 播放音乐的html代码,音乐播放器-html代码
  13. outlook邮件通过python发送_怎么发送邮箱-python调用outlook发送邮件的超详细操作步骤...
  14. 计算机管理储存u盘无法使用,U盘无法识别的三种常见情况
  15. 合同和协议的区别_你签的是合同还是协议?他们的法律效力有区别吗?
  16. 如何把EAN13码外观设置和code128码一样
  17. 51单片机距离测试软件,单片机超声波传感器测量距离
  18. 软负载均衡和硬负载均衡
  19. 艺赛旗RPA 网页处理系列(三):网页检查 / 审查小技巧
  20. 开源流媒体服务器SRS环境搭建

热门文章

  1. linux logger 监控,shell-logger的使用
  2. 彻底解决chrome浏览器被篡改主页的问题chrome浏览器启动打开其他页面
  3. Spring 事务的属性
  4. vue垂死挣扎系列(一)——vue-cli快速搭建
  5. 经纬恒润智能驾驶创新之路
  6. Stephen William Hawking
  7. 解决:cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\contours.cpp
  8. 如何用计算机打出下山,登山怎么正确下山
  9. ANF到DNT完美转移
  10. 046 中值定理之型三(ξ与a,b不可分离;凑微法);型四(ξ η多个中值之case1:找三点 两次拉格朗日)