一、拉取版本代码,并修改certs相关文件
#拉去代码
git clone --branch v1.24.15 https://github.com/kubernetes/kubernetes.git
cd kubernetes
#修改cert.go
vi staging/src/k8s.io/client-go/util/cert/cert.go
'''
func NewSelfSignedCACert(cfg Config, key crypto.Signer) (*x509.Certificate, error) {
now := time.Now()
tmpl := x509.Certificate{
SerialNumber: new(big.Int).SetInt64(0),
Subject: pkix.Name{
CommonName: cfg.CommonName,
Organization: cfg.Organization,
},
DNSNames: []string{cfg.CommonName},
NotBefore: now.UTC(),
//NotAfter: now.Add(duration365d).UTC(),
NotAfter: now.Add(duration365d * 100).UTC(),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign,
BasicConstraintsValid: true,
IsCA: true,
'''
#修改CertificateValidity
vi cmd/kubeadm/app/constants/constants.go
'''
const (
// KubernetesDir is the directory Kubernetes owns for storing various configuration files
KubernetesDir = "/etc/kubernetes"
// ManifestsSubDirName defines directory name to store manifests
ManifestsSubDirName = "manifests"
// TempDirForKubeadm defines temporary directory for kubeadm
// should be joined with KubernetesDir.
TempDirForKubeadm = "tmp"
// CertificateValidity defines the validity for all the signed certificates generated by kubeadm
// CertificateValidity = time.Hour * 24 * 365
CertificateValidity = time.Hour * 24 * 365 * 100
// DefaultCertificateDir defines default certificate directory
DefaultCertificateDir = "pki"
// CACertAndKeyBaseName defines certificate authority base name
CACertAndKeyBaseName = "ca"
// CACertName defines certificate name
CACertName = "ca.crt"
// CAKeyName defines certificate name
CAKeyName = "ca.key"
'''
#去掉因编译源码而在版本生成时候增加-dirty
sed -ri 's#KUBE_GIT_TREE_STATE="dirty"#KUBE_GIT_TREE_STATE="clean"#g' hack/lib/version.sh
二、重新编译源码,生成kubeadm
#centos yum install gcc make rsync jq -y #debain apt update && apt install build-essential rsync jq -y #重新编译kubeadm make all WHAT=cmd/kubeadm GOFLAGS=-v #编译kubelet make all WHAT=cmd/kubelet GOFLAGS=-v #编译kubectl make all WHAT=cmd/kubectl GOFLAGS=-v 编译完的kubeadm在 _output/bin/kubeadm 目录下,其中bin是使用了软连接,真实路径是_output/local/bin/linux/amd64/kubeadm
三、查看集群证书过期时间
kubeadm certs check-expiration