前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s重新编译kubeadm解决证书过期问题

k8s重新编译kubeadm解决证书过期问题

作者头像
dogfei
发布2020-07-31 15:36:39
1.5K1
发布2020-07-31 15:36:39
举报
文章被收录于专栏:devops探索devops探索

问题说明

kubeadm 是 kubernetes 提供的一个初始化集群的工具,使用起来非常方便。但是它创建的apiserver、controller-manager等证书默认只有一年的有效期,同时kubelet 证书也只有一年有效期,一年之后 kubernetes 将停止服务。 官方推荐一年之内至少用 kubeadm upgrade 更新一次 kubernetes 系统,更新时也会自动更新证书。不过,生产环境或者无法连接外网的环境频繁更新 kubernetes 不太现实。

重新编译kubeadm

这里测试了三个版本的k8s,一个是v1.15.1, v1.15.3, v1.16.3,都适用

下载k8s源码

直接google搜索kubernetes github去下载即可

修改源码

进到源码目录中,需要修改两处地方 第一个地方:

# vim ./staging/src/k8s.io/client-go/util/cert/cert.go
NotAfter: now.Add(duration365d * 10).UTC(),  //默认为10年,修改为100年,不能超过1000年,因为我试过不行

第二个地方:

# vim ./cmd/kubeadm/app/constants/constants.go
CertificateValidity = time.Hour * 24 * 365 * 100   //改为这里的值

重新编译kubeadm

这里通过docker容器的方式去编译

docker run --rm -it -v /tmp/kubernetes/:/go/src/k8s.io/kubernetes mirrorgooglecontainers/kube-cross:v1.12.10-1 bash

#进入容器
cd /go/src/k8s.io/kubernetes
make all WHAT=cmd/kubeadm GOFLAGS=-v

替换旧的kubeadm

新生成的kubeadm会在./_output/local/bin/linux/amd64/kubeadm这个路径下 把旧的做好备份,还有/etc/kubernetes/pki也备份下

cp ./_output/local/bin/linux/amd64/kubeadm /usr/bin/kubeadm

执行命令更新证书

#更新证书
kubeadm alpha certs renew all
#查看证书时间
kubeadm alpha certs check-expiration
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题说明
  • 重新编译kubeadm
    • 下载k8s源码
      • 修改源码
        • 重新编译kubeadm
          • 替换旧的kubeadm
            • 执行命令更新证书
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档