相信很多同学在搭建kubernetes时都会选择使用工具进行安装, 现在开源的工具真是层出不穷,本人也体验过多种部署工具, 如rke、kubespray、kubeadm、minikube甚至手工安装等, kubeadm是本人第一个尝试的工具, 因此也使用的最多, kubeadm默认的证书是1年到期, client能够到期后自动进行续签,但是server端却不能, 如果在到期时没有及时进行证书的延期, 则会造成整个集群异常,今天主要记录下kubeadm通过修改源码来改变集群证书的相关操作
修改kubeadm源码
切换分支
1 | git clone https://github.com/kubernetes/kubernetes.git |
修改kubeadm源码
1 | // kubernetes/cmd/kubeadm/app/constants/constants.go |
这两个地方都可以修改, 只要最后这两个值能跟期望值对应上即可,修改完之后对kubeadm进行编译
二进制编译
1 | KUBE_BUILD_PLATFORMS=linux/amd64 make all WHAT=cmd/kubeadm GOFLAGS=-v GOGCFLAGS="-N -l" |
最终会在kubernetes/_output生成kubeadm, 如果大家不想麻烦的话, 这里有个现成的版本对应v1.15, 证书有效期100年.
1 | wget http://rj-bai.oss-cn-beijing.aliyuncs.com/kubeadm -O /usr/bin/kubeadm && chmod +x /usr/bin/kubeadm |
或者进入cmd/kubeadm
执行go build -v命令,如果没出错,会生成可执行文件kubeadm
1 | go build -v |
生成的可执行文件在当前文件夹下面
1 | ls cmd/kubeadm/ |
容器编译
1 | # 使用官方的kube-cross镜像进行编译. |
搭建新集群
如果是新集群的话就比较容器了, 直接使用新的kubeadm进行部署, 那么部署出来的集群证书就是100年.p
kubeadm如何进行集群部署, 这里不再详细记录了.这里只写主要步骤
1 | apt install -y kubelet=1.15.1-00 kubectl=1.15.1-00 kubeadm=1.15.1-00 --allow-change-held-packages |
将新版的kubeadm替换默认安装的kubeadm
1 | mv /usr/bin/kubeadm /usr/bin/kubeadm_bak |
kubeadm执行完了按照提示执行命令
最终部署起来的集群证书有效期为100年
对现有集群进行证书更新
那如果是对存在的集群进行证书重签,如何操作呢?
首先, 查看当前集群的证书有效期,这里使用的kubeadm是未修改源码的kubeadm
1 | kubeadm alpha certs check-expiration |
在没有使用kubeadm搭建的情况下,可以使用以下命令查看证书过期时间
1 | openssl x509 -in front-proxy-client.crt -noout -text |grep Not |
然后使用证书100年的kubeadm执行以下操作即可
1 | # 使用100年的kubeadm更新证书 |
至此, 不管是搭建集群之前操作证书有效期还是对存在的集群延长证书有效期进行操作都不怕了,完美.