- cpu6核心以上
- 内存15gb以上
- 拉取源码
- 确保golang版本与源码版本一致(一般新的不行就往回退个版本)
主要为了解决 二进制方式部署Kubernetes的 kubelet-client证书1年的问题(二进制部署其余证书都是可以在安装的时候自己配置时间的,)改k8s源码为5年
准备编译环境
yum install git wget vim gcc gcc+ make -yyum install golang -y #新版的是编译不了旧版本的k8s源码的 这里要注意下
下载k8s源码包
go versionwget https://github.com/kubernetes/kubernetes/archive/v1.14.8.tar.gzcd kubernetes-1.14.8/
改kubelet-client证书时长
#改为五年vi ./pkg/controller/apis/config/v1alpha1/defaults.go原: = metav1.Duration{Duration: 365 * 24 * time.Hour改5年:obj.ClusterSigningDuration = metav1.Duration{Duration: 365 * 24 * time.Hour * 10}
编译
cd kubernetes-1.14.8/ KUBE_BUILD_PLATFORMS=linux/amd64 make
#生成的二进制文件
[root@31039 kubernetes-1.14.8]# ls _output/bin/apiextensions-apiserver deepcopy-gen e2e.test genman ginkgo hyperkube kube-controller-manager kubemark linkcheckcloud-controller-manager defaulter-gen gendocs genswaggertypedocs go2make kubeadm kubectl kube-proxy mounterconversion-gen e2e_node.test genkubedocs genyaml go-bindata kube-apiserver kubelet kube-scheduler openapi-gen[root@31039 kubernetes-1.14.8]#[root@31039 kubernetes-1.14.8]# cd _output/bin/[root@31039 bin]# ./kube-controller-manager --versionKubernetes v1.14.8[root@31039 bin]#
用法:
将编译好的kube-controller-manager 拷贝出来,
- 在已有集群使用: 替换默认的kube-controller-manager,重启master节点,node节点相关服务
- 在准备二进制安装k8s集群使用:在安装前替换kube-controller-manager
/usr/local/bin/kube-controller-manager #替换systemctl status kube-controller-manager.service #重启生效#重新添加Node节点(重启node节点 kubelet.service)#接受csr#验证证书效果(看证书有效期/直接改Linux系统日志往后改3年集群不挂即成功)[root@228-godfs-01 ~]# cd /etc/kubernetes/ssl/[root@228-godfs-01 ssl]# pwd/etc/kubernetes/ssl[root@228-godfs-01 ssl]# openssl x509 -in kubelet-client-2020-03-04-16-23-04.pem -noout -text|grep Not Not Before: Mar 4 08:18:00 2020 GMT Not After : Mar 3 08:11:55 2025 GMT[root@228-godfs-01 ssl]#
效果