S_lion's Studio

修改kubeadm证书过期时间

字数统计: 330阅读时长: 1 min
2021/09/23 Share

证书过期

利用kubeadm安装后发现ca的证书过期时间是十年,但是由ca签发的如apiserver.crt的证书过期时间都是一年,这就尴尬了。

  1. 如果已经创建后的集群到了一年执行kubectl命令会出现:
1
Unable to connect to the server: x509: certificate has expired or is not yet valid

此时需要手动更新证书。

  1. 如果我们还没开始搭建,在搭建集群前我们可以直接修改相关源码解决这个问题。

拉取kubernetes的源码

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

切换版本

1
cd kubernetes && git checkout -b remotes/origin/release-1.11  v1.11.0

安装Go环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
tar zxvf go1.10.2.linux-amd64.tar.gz  -C /usr/local
 
#编辑/etc/profile文件添加如下:
#go setting
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:$GOROOT/bin

source /etc/profile 生效
 
验证:
go version
go version go1.10.2 linux/amd64

修改源码

1
2
3
4
5
6
7
8
cd  ~/kubernetes/staging/src/k8s.io/client-go/util/cert/
#编辑 cert.go文件(107行和180行)
@@107@@
- NotAfter: time.Now().Add(duration365d).UTC(),
+ NotAfter: time.Now().Add(duration365d * 10).UTC(),
@@180@@
- NotAfter: time.Now().Add(time.Hour * 24 * 365),
+ NotAfter: time.Now().Add(time.Hour * 24 * 3650),

编译Go

1
cd /kubernetes/ && make WHAT=cmd/kubeadm

查看编译后的文件

1
2
ll ~/kubernetes/_output/bin/kubeadm
注意看时间

替换kubeadm

1
2
mv /usr/bin/kubeadm /usr/bin/kubeadm_backup
ln -s ~/kubernetes/_output/bin/kubeadm /usr/bin/kubeadm
CATALOG
  1. 1. 证书过期