一、问题与环境

1.为什么更新证书?局域网如何保障服务稳定性?
  众所周知k8s(Kubernetes)有一个默认证书期限为一年不成文的规定,官方的解释是“最佳的做法是经常升级集群以确保安全。(升级后集群证书自动续期一年)”,这就导致运维人员有概率遗忘更新证书而导致整个k8s集群管理命令无法使用的惨状,但往往事与愿违很多政府合作的项目更看重稳定性,因为它们都运行在”政务网“也可以理解为局域网,在局域网当然就不存在安全性问题了。本文通过实战项目将k8s集群证书期限更改至100年!

2.环境

系统环境CentOS7.8

运行环境Go1.19.4

HA高可用k8s1.23.1集群

二、安装包

  • go1.19.4.linux-amd64.tar.gz【提取码:r7q1】
  • kubernetes-1.23.1.zip【提取码:r7q1】

三、步骤

注意:所有master节点都需要进行以下操作

1.备份配置文件

mkdir ~/confirm
cp -rf /etc/kubernetes/ ~/confirm/
mkdir ~/confirm/data_etcd
cp -rf /var/lib/etcd/* ~/confirm/data_etcd
cp /usr/bin/kubeadm /usr/bin/kubeadm.bak

2.二次编译环境安装

mkdir k8s-cet
cd k8s-cet/
tar xzf go1.19.4.linux-amd64.tar.gz -C /usr/local/vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/go
:wqsource /etc/profile

3.kubeadm二次编译并修改期限【核心】

unzip kubernetes-1.23.1.zip
cd kubernetes-1.23.1/vim cmd/kubeadm/app/constants/constants.go
#搜索CertificateValidity
修改证书时间 :CertificateValidity = time.Hour * 24 * 365 * 100vim staging/src/k8s.io/client-go/util/cert/cert.go
#搜索KeyUsageDigitalSignatur
修改 :NotAfter:              now.Add(duration365d * 100).UTC(),make -j4 WHAT=cmd/kubeadm
rm -rf /usr/bin/kubeadm
cp /srv/soft/k8s-cet/kubernetes-1.23.1/_output/bin/kubeadm /usr/bin/kubeadm
kubeadm certs renew all
kubeadm certs check-expiration


注意:可以看到图中所圈区域时间年限已经变成99年了,但是这不意味着结束,还需要执行一个关键步骤“重启静态pod”

4.重启静态pod【重要】

静态pod是什么?
  静态Pod是由kubelet进行管理的仅存在于特定Node的Pod上,他们不能通过API Server进行管理,无法与ReplicationController、Deployment或者DaemonSet进行关联,并且kubelet无法对他们进行健康检查。简单来说就是组成k8s本身的pod例如:etcd、kube-apiserver、kube-controller-manager、kube-scheduler

cd ~/confirm
tar -cvf static.tar.gz /etc/kubernetes/manifests/*
tar -tf static.tar.gz
rm -f /etc/kubernetes/manifests/*.yaml
# 等待20s 命令死掉(kubectl get ns 执行报错后开始执行下面解压命令)
# HA集群需要所有主节点一起进行,否则无法验证kubectl服务pod是否停止(会轮询道其他主节点)
tar -xvf static.tar.gz -C /etc/kubernetes/manifests/

说明:这样做的目的好处是 在不影响现有的线上服务动态Pod前提起到重启静态pod的效果从而实现所谓的“热更新”

5.更新kubeconfig【重要】

cd /etc/kubernetes/
cp admin.conf  /root/.kube/config
# 如果文件存在则会问是否覆盖,输入y回车即可
y

注意:如果不更新kubeconfig则kubectl将无权限管理Pod

6.验证

kubectl get ns

检验kubectl命令

检验整个HA集群证书时间

检验报警是否恢复

四、结束语

  本次k8s证书更新项目实战到此结束了,感谢认真读完,如果觉得还可以并且给予了你一定的帮助,那么给作者点赞、收藏、关注吧!

Kubernetes证书热更新期限至100年【HA高可用集群】相关推荐

  1. s24.基于 Kubernetes v1.25 (二进制) 和 Docker部署高可用集群

    1.安装说明 本文章将演示二进制方式安装高可用k8s 1.17+,相对于其他版本,二进制安装方式并无太大区别,只需要区分每个组件版本的对应关系即可. 生产环境中,建议使用小版本大于5的Kubernet ...

  2. Kubernetes — 使用 kubeadm 部署高可用集群

    目录 文章目录 目录 Kubernetes 在生产环境中架构 高可用集群部署拓扑 1.网络代理配置 2.Load Balancer 环境准备 3.Kubernetes Cluster 环境准备 安装 ...

  3. 内网环境下手动部署kubernetes(v1.26.3)高可用集群

    这篇博客主要是记录了手动部署一个高可用的Kubernetes集群的过程.旨在帮助自己及初学者学习kubernetes,并记录下具体的操作过程和总结的知识点.文中可能存在一些问题或不足之处,仅供参考. ...

  4. s19.基于 Kubernetes v1.25 (kubeadm) 和 Docker 部署高可用集群(一)

    基于 Kubernetes v1.25 和 Docker 部署高可用集群 主要内容 Kubernetes 集群架构组成 容器运行时 CRI Kubernetes v1.25 新特性 Kubernete ...

  5. s20.基于 Kubernetes v1.25 (kubeadm) 和 Docker 部署高可用集群(二)

    4.4 安装 Docker master和node安装docker-ce: [root@k8s-master01 ~]# cat install_docker.sh #!/bin/bash # #** ...

  6. 16、Kubernetes搭建高可用集群

    文章目录 前言 一.高可用集群 1.1 高可用集群技术细节 二.部署高可用集群 2.1 准备环境 2.2 所有master节点部署keepalived 2.2.1 安装相关包和keepalived 2 ...

  7. 使用kubeadm安装kubernetes高可用集群

    kubeadm安装kubernetes高可用集群搭建  第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...

  8. 【kubernetes】k8s使用客户端连接haproxy访问高可用集群流程详细说明【使用kubeconfig连接haproxy】【kubeconfig配置全部流程】

    文章目录 master高可用部署流程 客户端连接haproxy访问高可用集群 环境确认与准备[必看] 客户端连接happroxy说明 kubeconfig配置[master上操作] 客户端测试 说明 ...

  9. 企业实战-Kubernetes(十四)k8s高可用集群

    k8s高可用集群 1 使用pacemaker搭建k8s的高可用(haproxy的高可用) 安装并配置haproxy 安装并配置pacemaker 2 k8s集群部署 master准备 三个结点关闭交换 ...

最新文章

  1. 转载:力扣:整数翻转(难点:整数溢出)
  2. Java自动装箱后的值比较
  3. 工业控制中无线局域网应用前景分析
  4. [20160201]db_link与子光标问题.txt
  5. python同步应用:多个线程有序执行
  6. 结合使用 Hadoop 和 Couchbase
  7. 黄山旅游自助攻略住宿行程路线篇
  8. node(map对象/键值对,作用域,函数作用域,全局作用域)
  9. IP子网划分概念:IP地址,子网和网关配置——Vecloud
  10. amazeui学习笔记--css(HTML元素1)--按钮Button
  11. 8. 求 s=a+aa+aaa+aaaa+aa…a 的值
  12. db2 数据库的常用命令
  13. logmein WP 逆向
  14. chrome中了flash过期的解决方法
  15. JS键盘码及使用方法
  16. 【2021.03.19】长调用与短调用
  17. Node.js使用jsrsasign实现SHA256withRSA加密算法
  18. C++数据类型 浅显理解
  19. C 语言回调函数详解
  20. Word中设置所有西文字体为新罗马

热门文章

  1. 为什么剩余数不能相加_2018年公务员考试行测指导:数学运算之剩余问题
  2. Ubuntu ssh上传下载文件
  3. pscad和matlab,pscad和matlab
  4. VSCode设置第三方字体
  5. php电商实现流程图,线上电商运营流程绘制流程图分享
  6. 【Unity】项目内UI图片丢失不显示
  7. 动漫培训机构排名前十,假的
  8. 使用python进行dicom序列转nii
  9. HTML小制作之卡片
  10. 12个MySQL慢查询的原因分析