转载注明原作者地址:http://www.cnblogs.com/hahp
kubeadm 是 kubernetes 提供的一个初始化集群的工具,使用起来非常方便。但是它创建的集群证书默认只有一年的有效期,一年之后随着证书失效,各个节点以及 apiserver 都将停止服务。官方推荐一年之内至少用 kubeadm upgrade 更新一次 kubernetes 系统,更新时也会自动更新证书。不过,在产线环境或者无法连接外网的环境频繁更新 kubernetes 不太现实。可以修改 kubeadm 创建证书的组件,让它初始化集群时创建10年或其它有效期的证书,重新编译后使用。
下面是我的源代码补丁,请给所需要的 kubernetes 版本打上,然后重新编译 kubeadm,用新编译的 kubeadm 初始化集群:
diff -Nur kubernetes.orig/vendor/k8s.io/client-go/util/cert/cert.go kubernetes/vendor/k8s.io/client-go/util/cert/cert.go--- kubernetes.orig/vendor/k8s.io/client-go/util/cert/cert.go ???2018-02-07 17:14:40.553612448 +0800+++ kubernetes/vendor/k8s.io/client-go/util/cert/cert.go ???2018-02-10 17:20:48.301330560 +0800@@ -104,7 +104,7 @@ ????????IPAddresses: ?cfg.AltNames.IPs, ????????SerialNumber: serial, ????????NotBefore: ???caCert.NotBefore,- ???????NotAfter: ????time.Now().Add(duration365d).UTC(),+ ???????NotAfter: ????time.Now().Add(duration365d * 10).UTC(), ????????KeyUsage: ????x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, ????????ExtKeyUsage: ?cfg.Usages, ????}@@ -149,7 +149,7 @@ ????????????CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()), ????????}, ????????NotBefore: time.Now(),- ???????NotAfter: ?time.Now().Add(time.Hour * 24 * 365),+ ???????NotAfter: ?time.Now().Add(time.Hour * 24 * 3650), ?????????KeyUsage: ?????????????x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, ????????ExtKeyUsage: ??????????[]x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
[经验交流] kubeadm 安装 kubernetes 一年过期的解决办法
原文地址:https://www.cnblogs.com/hahp/p/8440743.html