kubeadm1.18.0修改证书过期时间

第一步引用这位大佬http://blog.sina.com.cn/s/blog_537517170102za73.html

看了很多文章都是模棱两可,大多数都是实践不成功,经常测试完善结合以上大佬的文章满足了我自己需求。(上面大佬文章个人感觉延迟证书时间是简洁的)

记录一下实践过程:

centos 8

环境要求 go 后面需要编译源码

安装go 直接yum install -y go-lang

需求安装k8s集群默认是一年证书到期,为了方便要求直接3 年5年

1 查看证书到期时间,内容略过直接贴命令

kubeadm alpha certs check-expiration

2查看当前kubeadm使用版本

kubeadm config images list

[root@k8s-01 k8s]# kubeadm config images list
W0606 18:10:19.572724 29624 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
k8s.gcr.io/kube-apiserver:v1.18.3
k8s.gcr.io/kube-controller-manager:v1.18.3
k8s.gcr.io/kube-scheduler:v1.18.3
k8s.gcr.io/kube-proxy:v1.18.3

这一步和大佬的不一样 哈哈哈  反正我按自己的来因为我安装的kubeadm 是v1.18.0  所以下一步直接下载的1.18.0

3根据版本下载对应源码

git clone –branch v1.18.0 https://github.com/kubernetes/kubernetes.git​

4 进入源码目录,查看相关的文件

cat cmd/kubeadm/app/util/pkiutil/pki_helpers.go​

找到代码NotAfter:     time.Now().Add(kubeadmconstants.CertificateValidity).UTC(),​

根据import 找到相关文件并修改

vim cmd/kubeadm/app/constants/constants.go​

将CertificateValidity = time.Hour * 24 * 365 改为 time.Hour * 24 * 365 * 5  (随你喜欢写多少年)

5编译

make WHAT=cmd/kubeadm GOFLAGS=-v

生成的二进制在 _output/bin/ 目录下

6 替换

先备份

cp /usr/bin/kubeadm /usr/bin/kubeadm.backup​

再替换

cp _output/bin/kubeadm /usr/bin/kubeadm​

7证书更新

1、仍是先备份

cp -r /etc/kubernetes/pki /etc/kubernetes/pki.backup​

配置文件也备份

mkdir -p /etc/kubernetes/back &&  cp *.conf   /etc/kubernetes/back

生成证书

kubeadm alpha certs renew all

单master集群换证书结束

=======================================

集群操作生成证书

这里开始有点变化 看了很多都是不对的(上面大佬应该是单master )

1 生成集群配置yaml
kubeadm config view > /root/kubeadm.yaml

2 通过集群配置更新证书
kubeadm alpha certs renew all –config=/root/kubeadm.yaml

3 查看证书时间
kubeadm alpha certs check-expiration

4 重启docker让配置生效

docker ps |grep -E ‘k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd’ | awk -F ‘ ‘ ‘{print $1}’ |xargs docker restart

已经变成自己想要的时间了 多master 在多个master节点上执行以上操作

 

 

 

 

发表评论

电子邮件地址不会被公开。