kubeadm方式部署的k8s修改证书年限

2023-05-16

说明

kubeadm方式部署的k8s默认证书的年限为1一年,当集群更新时,证书也会更新,如果集群每年都会更新,那么证书年限就不用修改。但是大部分情况下,为了保证线上环境稳定,集群很少去修改。所以需要将证书时间修改一下。

查看集群证书有效期

进入目录

cd /etc/kubernetes/pki/

查看有效期

openssl x509 -in apiserver.crt  -text -noout

在这里插入图片描述

安装go环境

cd /data/
wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
tar -xf go1.12.7.linux-amd64.tar.gz -C /usr/local/

在这里插入图片描述
在这里插入图片描述
配置go环境变量
/etc/profile最末尾添加
export PATH=$PATH:/usr/local/go/bin

vim /etc/profile

刷新配置变量生效

source /etc/profile

此时安装完毕,查看版本

go version

在这里插入图片描述

克隆k8s的项目(需要一段时间)

git clone https://github.com/kubernetes/kubernetes.git

在这里插入图片描述

查看kubeadm版本

kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:56:30Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}

在这里插入图片描述

切换到新的版本

cd kubernetes/
git checkout -b remotes/origin/release-1.18.0  v1.18.0

在这里插入图片描述

修改 Kubeadm 源码包更新证书策略

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

找到NewSignedCert方法

// NewSignedCert creates a signed certificate using the given CA certificate and key
func NewSignedCert(cfg *certutil.Config, key crypto.Signer, caCert *x509.Certificate, caKey crypto.Signer) (*x509.Certificate, error) {
        const duration365d = time.Hour * 24 * 365 * 10   #新增一个常量,这个意思是1个小时*24*365*10=10年
        serial, err := cryptorand.Int(cryptorand.Reader, new(big.Int).SetInt64(math.MaxInt64))
        if err != nil {
                return nil, err
        }
        if len(cfg.CommonName) == 0 {
                return nil, errors.New("must specify a CommonName")
        }
        if len(cfg.Usages) == 0 {
                return nil, errors.New("must specify at least one ExtKeyUsage")
        }

        certTmpl := x509.Certificate{
                Subject: pkix.Name{
                        CommonName:   cfg.CommonName,
                        Organization: cfg.Organization,
                },
                DNSNames:     cfg.AltNames.DNSNames,
                IPAddresses:  cfg.AltNames.IPs,
                SerialNumber: serial,
                NotBefore:    caCert.NotBefore,
                NotAfter:     time.Now().Add(kubeadmconstants.CertificateValidity).UTC(),  #改为time.Now().Add(duration365d).UTC(),
                KeyUsage:     x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
                ExtKeyUsage:  cfg.Usages,
        }
        certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &certTmpl, caCert, key.Public(), caKey)
        if err != nil {
                return nil, err
        }

编译kubeadm

在当前源码路径下
cd kubernetes/

make WHAT=cmd/kubeadm GOFLAGS=-v
cp _output/bin/kubeadm /root/kubeadm-new

更新 kubeadm(更新之前先备份)

将 kubeadm 进行替换

[root@k8s-master ~]# cp /usr/bin/kubeadm  /usr/bin/kubeadm.old
[root@k8s-master ~]# cp /root/kubeadm-new /usr/bin/kubeadm
cp:是否覆盖"/usr/bin/kubeadm"? y
[root@k8s-master ~]# chmod +x /usr/bin/kubeadm

备份pki目录

cp -r /etc/kubernetes/pki /etc/kubernetes/pki.old 

生成证书文件(这个config文件是初始化集群时候的配置)

 kubeadm alpha certs renew all --config=/data/kubeadm-config.yaml

生成集群的配置文件及查看
如果集群没有kubeadm-config.yaml文件,可以生成一个k8s的初始化文件

kubeadm config view > /data/kubeadm-config.yaml
[root@k8s-master ~]# kubeadm alpha certs renew all --config=/data/kubeadm-config.yaml
certificate embedded in the kubeconfig file for the admin to use and for kubeadm itself renewed
certificate for serving the Kubernetes API renewed
certificate the apiserver uses to access etcd renewed
certificate for the API server to connect to kubelet renewed
certificate embedded in the kubeconfig file for the controller manager to use renewed
certificate for liveness probes to healtcheck etcd renewed
certificate for etcd nodes to communicate with each other renewed
certificate for serving etcd renewed
certificate for the front proxy client renewed

查看证书的年限

[root@k8s-master ~]# cd /etc/kubernetes/pki
[root@k8s-master pki]# openssl  x509 -in apiserver.crt  -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 3637387775685121508 (0x327a98e9080f55e4)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=kubernetes
        Validity
            Not Before: Apr 27 09:50:35 2022 GMT
            Not After : Apr 11 06:48:21 2032 GMT

在这里插入图片描述

更新各节点证书

master上执行,替换xx.xx.xxx为各个节点ip

[root@k8s-node01 pki]# scp root@xx.xx.xxx:/etc/kubernetes/pki/ca.crt  ./

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubeadm方式部署的k8s修改证书年限 的相关文章

  • Harbor镜像仓库搭建

    1 安装docker comprose docker comprose是docker容器批量管理工具 curl L https get daocloud io docker compose releases download 1 25 0
  • k8s安装遇到过的一些问题

    无法获取recomended yaml文件 root k8master1 wget https raw githubusercontent com kubernetes dashboard v2 7 0 aio deploy recomme
  • K8s-yaml的使用及命令

    YAML配置文件管理对象 对象管理 创建deployment资源 kubectl create f nginx deployment yaml 查看deployment kubectl get deploy 查看ReplicaSet kub
  • k8s删除Terminating 的命名空间等资源

    背景 在k8s中执行删除命名空间后 命名空间没有被删除而是处于Terminating状态 此时再执行删除仍然删除不掉 解决 将要删除的命名空间信息导出为json数据 下面traefik v2 替换成你需要删除的命名空间名称 kubectl
  • Rancher 图形化管理K8S

    题外话 之前我们一直都是使用命令行来管理K8S的 这种做法虽然对程序员来说看起来很炫酷 但有时候用起来还是挺麻烦的 今天我们来介绍一个K8S可视化管理工具Rancher 使用它可以大大减少我们管理K8S的工作量 希望对大家有所帮助 简介 R
  • kubeadm配置虚拟机k8s集群

    环境 centos7 vm pro windows terminal termius 虚拟机 硬件配置 2核2G 实验用 具体可根据电脑调整 配置3台 master01 node01 node02 通过克隆虚拟机直接复制 配置通一项以后建议
  • k8s-node节点未找到flannel网络

    k8s node节点的flannel的IP地址不正确 问题描述 问题分析 1 检查node节点的cni和flannel网卡地址 2 检查master节点的flannel服务 如何重置flannel网络 1 删除node节点 master 2
  • Kubernetes + Dashboard 集群搭建

    1 环境说明 基于kubeadm工具部署k8s 集群 还有基于二进制的部署方式但是需要单独部署k8s的每个组件比较繁琐 kubeadm是 Kubernetes官 提供的 于快速部署Kubernetes集群的 具 基于Kubernetes v
  • k8s Failed to create pod sandbox错误处理

    错误信息 Failed to create pod sandbox rpc error code Unknown desc failed to get sandbox image k8s gcr io pause 3 2 failed to
  • k8s问题 CrashLoopBackOff

    我们创建资源发现资源出现CrashLoopBackOff解决 CrashLoopBackOff 告诉我们 Kubernetes 正在尽力启动这个 Pod 但是一个或多个容器已经挂了 或者正被删除 root localhost kubectl
  • Kubernets原理分解

    主节点 master 快速介绍 master也要装kubelet和kubeproxy 前端访问 UI CLI kube apiserver scheduler controller manager etcd kubelet kubeprox
  • kubeadm 安装k8s

    关于k8s集群化部署 以下均是个人一步一步的完成部署 并且会罗列出在部署过程中遇到的各种问题及其解决方式 一 环境准备 环境准备阶段试用与master节点部署与work节点部署 即master和work节点全部都需要执行这些步骤 1 关闭防
  • kubeadm集群化部署多master节点(生产环境适用)

    一 背景介绍 k8s通过master集中式管理worknode的容器编排系统 而在生产环境为了维护高可用性 master的地位起到举无轻重的作用 一旦master节点失守 则会导致整个集群服务不可用 因此配置多master集群在生产环境非常
  • 从Docker到Kubernetes——Kubernetes设计解读之ReplicationController、Service

    文章目录 Kubernetes的设计解读 replication controller 设计解读 replication controller 使用示例 service的设计解读 service的使用示例 Kubernetes的设计解读 r
  • Kubernetes:将 Kops 集群与本地 Kubeadm 集群相结合

    我们目前有 2 个 Kubernetes 集群 在 AWS 上运行 Kops 的一种设置 在我们自己的硬件上运行 Kubeadm 的一种设置 我们希望将它们组合起来 只需要管理一个集群 主服务器最终可能位于 AWS 或我们的服务器上 两者都
  • kubernetes集群中的DNS解析问题

    我们有一个 kubernetes 集群 由 4 个工作节点和 1 个主节点组成 上worker1 and worker2我们无法解析 DNS 名称 但在其他两个节点中一切正常 我按照官方文档的说明进行操作here and 我意识到 core
  • 是否有重新启动集群的最佳实践

    我遵循亚历克斯埃利斯的优秀tutorial https gist github com alexellis fdbc90de7691a1b9edb545c17da2d975使用kubeadm在 Raspberry Pi 上启动 K8s 集群
  • flannel和calico区别

    k8s网络模式 Flannel数据包在主机间转发是由backend实现的 目前已经支持UDP VxLAN host gw等多种模式 VxLAN 使用内核中的VxLAN模块进行封装报文 也是flannel推荐的方式 host gw虽然VXLA
  • kubectl 无法从私有存储库中提取镜像

    我正在运行 kubeadm alpha 版本来设置我的 kubernates 集群 我正在尝试从 kubernates 提取托管在 nexus 存储库中的 docker 镜像 当我尝试创建一个 Pod 时 它每次都会给出 ImagePull
  • 如何为 Kubernetes 集群确定合适的 pod CIDR 值?

    我正在启动一个 kubernetes 集群 kubeadm init pod network cidr 192 168 1 0 16 apiserver advertise address 192 168 0 33 我对网络概念或 CIDR

随机推荐

  • 矩阵遍历问题

    这里记录些常见的矩阵遍历问题 xff0c 矩阵遍历没有什么简单的方法 xff0c 必须要遍历矩阵的每个元素 xff0c 因此在时间复杂度上没有什么简单的方法 xff0c 不过遍历时的方式可以不同 首先看下面例题 leetcode54 给定一
  • ubuntu系统添加环境变量3种方法

    说明 工作中 xff0c 我们自己编译安装的软件 xff0c 在系统中是无法在全局目录下自动识别的 xff0c 只能进入到相关目录下才能运行 xff0c 如在命令行下运行编译安装的php程序 xff0c 就得 usr local LAMP
  • Codeforces 897C(递归)

    点击打开链接 扎心题 xff0c 当时想法完全正确 xff0c 姿势不对 xff08 思维不够细腻 xff09 没过 题意 xff1a 给出四个字符串x y f0 z xff0c 并且给出递推公式 xff1a fi 61 x 43 fi 1
  • 天气预报API汇总

    目录 文章目录 一 天气预报平台 1 中国气象平台 2 心知天气 3 实况天气 4 YY天气 5 聚合天气 6 和风天气 7 彩云天气 8 咕咕天气 9 彩云天气 总结 一 天气预报平台 1 中国气象平台 优点 xff1a 中国气象局对外提
  • ResizeObserve 在 Echarts 的使用

    前言 前端图表经常要进行 resize 操作 xff0c 一般我们会想到监听 window resize event xff0c 但是这个事件只能监听 window 窗口大小的改变 xff0c 没有办法监听到某个div大小的改变 目前解决方
  • 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

    运行java命令出现 Error Invalid or corrupt jarfile XXX jar 基本可以断定 xff0c 是jar不完整导致的 不完整 xff01 xff01 xff01 记住关键字 检查1 xff1a 检查是不是传
  • 页面间传值的方式

    从一个页面转向另一个页面的请求方式有两种 xff0c Post和Get 如果从原理上来探究他们的区别 xff0c 涉及到Http传输协议的细节 xff0c 这样深究下去 xff0c 就成华为人干的事了 xff0c 有空可以请教一下华为高人
  • 你现在无法访问 xxx.xxxx.com,因为网站使用的是 HSTS。网络错误和攻击通常是暂时的,因此该页面以后可能会恢复正常

    你现在无法访问 xxx xxxx com xff0c 因为网站使用的是 HSTS 网络错误和攻击通常是暂时的 xff0c 因此该页面以后可能会恢复正常 自己本地通过openSSL和nginx 搭建https证书 xff0c 过段时间通过域名
  • VMware通过vmdk安装Kali linux

    1 根据官网指引下载VMware专用kali linux版本 2 打开虚拟机 xff0c 文件 gt 扫描虚拟机 3 文件路径选择kali压缩包解压出来的文件夹的路径 4 点击下一步 xff0c 点击完成即可 5 这个就是我们刚刚创建的ka
  • 为什么中断子程序中不能使用延时和过长的程序?

    A回答 xff1a 通常在中断子程序中是不调用延时子程序的 xff0c 这样会增加中断处理时间 xff0c 如果有其它低级中断了 xff0c 就会延误响应中断了 所以 xff0c 中断子程序中不要写调用延时子程序 xff0c 中断子程序也不
  • iOS多线程详解:实践篇

    iOS多线程实践中 xff0c 常用的就是子线程执行耗时操作 xff0c 然后回到主线程刷新UI 在iOS中每个进程启动后都会建立一个主线程 xff08 UI线程 xff09 xff0c 这个线程是其他线程的父线程 由于在iOS中除了主线程
  • 【Qt】显示文件/文件夹下所有文件的路径

    一 条件与目的 给一个正确的文件夹绝对路径 xff0c QString字符串形式 要求打印出其中所有子目录以及其下的全部文件路径 二 废多看崩 名称 xff1a 遍历显示函数 参量 xff1a path 绝对路径 方法类 xff1a QDi
  • CMD执行命令行时卡住的问题

    公司编译工程项目时用了一些bat文件以命令行的方式来自动完成编译过程 xff0c 但是发现一个问题 xff0c 执行bat的时候Windows下弹出命令行窗口 xff0c 总是会时不时出现 假死 的情况 xff0c 然后命令执行就停在那里了
  • GET、POST、PUT、DELETE请求方式的区别以及用途

    1 GET GET请求是用来获取数据的 xff0c 不对服务器的数据做任何的修改 xff0c 新增 xff0c 删除等操作 GET请求就像数据库的SELECT操作一样 xff0c 只是用来查询一下数据 xff0c 不会修改 增加数据 xff
  • 通俗易懂-对于快慢指针找到链表环入口的理解

    图1是一个链表环 xff0c 此链表有8个结点 xff0c 分别为A H 假设起点为G xff0c 快指针fast和慢指针slow都从G出发 xff0c 慢指针一次遍历一个结点 xff0c 快指针一次遍历两个结点 xff0c 无论他们走多少
  • 通俗易懂-对于归并排序的细节理解python

    首先归并排序的原理就是将一个待排序的列表分成二等份 xff0c 四等份 xff0c 八等份 直到每一份只有一个元素的时候 xff0c 然后合并 xff0c 合并的时候进行排序 听起来有点绕 不多说 上代码 span class token
  • vnc连接失败可能的方案

    vnc连接失败可能的解决方案 上图表示还没有在windows power shell里边打开端口 xff0c 在windows power shell里边输入命令打开端口 xff0c 如下图所示 xff0c 密码和端口号换成服务器提供的即可
  • No module named 'matplotlib.pyplot'; 'matplotlib' is not a package

    关于No module named matplotlib pyplot matplotlib is not a package报错 在学习matlibplot的时候运行一个 py文件出现这样的报错 xff1a No module named
  • Error tokenizing data. C error: out of memory

    用pandas读入数据的时候发现数据读入时出错了 xff0c 数据量感觉也不是很大 十万多条数据 电脑内存是8个G 报错信息为 xff1a Error tokenizing data C error out of memory 想想不对啊
  • kubeadm方式部署的k8s修改证书年限

    说明 kubeadm方式部署的k8s默认证书的年限为1一年 xff0c 当集群更新时 xff0c 证书也会更新 xff0c 如果集群每年都会更新 xff0c 那么证书年限就不用修改 但是大部分情况下 xff0c 为了保证线上环境稳定 xff