修改kubeadm证书长期有效

发布时间 2023-06-14 14:53:10作者: liuxiaobei556

获取kubernetes v1.18.16源码包

git clone https://github.com/kubernetes/kubernetes.git -b v1.18.16

或者以下方式下载解压

wget https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.18.16.tar.gz
tar -zxvf v1.18.16.tar.gz

进入目录

cd kubernetes

修改cmd/kubeadm/app/constants/constants.go

- CertificateValidity = time.Hour * 24 * 365
+ CertificateValidity = time.Hour * 24 * 365 * 30

修改staging/src/k8s.io/client-go/util/cert/cert.go 中关于时间的参数

- const duration365d = time.Hour * 24 * 365
+ const duration365d = time.Hour * 24 * 365 * 30

修改 hack/lib/version.sh,为了打包后kubeadm的版本不是脏版本(-dirty),脏版本的kubeadm不能升级

      if git_status=$("${git[@]}" status --porcelain 2>/dev/null) && [[ -z ${git_status} ]]; then
        KUBE_GIT_TREE_STATE="clean"
      else
-        KUBE_GIT_TREE_STATE="dirty"
+       KUBE_GIT_TREE_STATE="clean"
      fi

下载编译镜像$(cat ./build/build-image/cross/VERSION) 当前1.18.16的编译镜像版本为kube-cross:v1.13.15-1

docker pull k8s.gcr.io/build-image/kube-cross:$(cat ./build/build-image/cross/VERSION)

启动编译环境镜像 /data/kubernetes-1.18.16为具体源码包地址

docker run --name k8sbuild -d -v /data/kubernetes-1.18.16:/go/src/k8s.io/kubernetes -it k8s.gcr.io/build-image/kube-cross:v1.13.15-1 bash

进入容器

docker exec -it k8sbuild bash

这里的命令都是在容器内部执行

cd /go/src/k8s.io/kubernetes

编译kubeadm, 这里主要编译kubeadm 即可

make all WHAT=cmd/kubeadm GOFLAGS=-v

当前目录下的_output/bin/下会生成kubeadm二进制文件,添加可执行权限,然后查看其版本信息

chmod 755 ./_output/bin/kubeadm`
./_output/bin/kubeadm version

退出容器从容器复制kubeadm

docker cp k8sbuild:/go/src/k8s.io/kubernetes/_output/bin/kubeadm ./