# wget -c https://go.dev/dl/go1.22.2.linux-amd64.tar.gz && rm -rf /usr/local/go
wget -c https://golang.google.cn/dl/go1.22.2.linux-amd64.tar.gz && rm -rf /usr/local/go
tar zxf go1.22.2.linux-amd64.tar.gz -C /usr/local/
go version
go version go1.22.2 linux/amd64
vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/go
apt-get install gcc automake autoconf libtool make rsync
yum install gcc automake autoconf libtool make rsync
go version
go version go1.22.2 linux/amd64
wget -c https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.26.8.zip -O k8s-v1.26.8.zip
unzip k8s-v1.26.8.zip
cd k8s-v1.26.8/kubernetes-1.26.8
version=1.28.2
wget -c https://github.com/kubernetes/kubernetes/archive/refs/tags/v$version.tar.gz -O k8s-v$version.tgz
tar zxf k8s-v$version.tgz
cd kubernetes-$version
version=1.30.0
wget -c https://github.com/kubernetes/kubernetes/archive/refs/tags/v$version.tar.gz -O k8s-v$version.tgz
tar zxf k8s-v$version.tgz
cd kubernetes-$version
## 修改这两个文件即可
cp cmd/kubeadm/app/constants/constants.go cmd/kubeadm/app/constants/constants.go.origin
cp staging/src/k8s.io/client-go/util/cert/cert.go staging/src/k8s.io/client-go/util/cert/cert.go.origin
sed -i 's/= time.Hour/= 100 * time.Hour/g' cmd/kubeadm/app/constants/constants.go
sed -i -e 's/duration365d \* 10)/duration365d * 100)/g' -e 's/maxAge := time.Hour/maxAge := 100 * time.Hour/g' -e 's/maxAge = time.Hour/maxAge = 100 * time.Hour/g' staging/src/k8s.io/client-go/util/cert/cert.go
grep '= 100 \* time.Hour' cmd/kubeadm/app/constants/constants.go # 1处
grep '= 100 \* time.Hour' staging/src/k8s.io/client-go/util/cert/cert.go # 2处
grep 'duration365d \* 100' staging/src/k8s.io/client-go/util/cert/cert.go # 1处
# 编译
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
time make WHAT=cmd/kubeadm KUBE_BUILD_PLATFORMS=linux/amd64
time make WHAT=cmd/kubeadm KUBE_BUILD_PLATFORMS=linux/arm64
md5sum _output/local/bin/linux/amd64/kubeadm
md5sum _output/local/bin/linux/arm64/kubeadm
# 编译 kubectl kube-apiserver kubelet
time make WHAT=cmd/kubectl KUBE_BUILD_PLATFORMS=linux/amd64
time make WHAT=cmd/kubectl KUBE_BUILD_PLATFORMS=linux/arm64
time make WHAT=cmd/kube-apiserver KUBE_BUILD_PLATFORMS=linux/amd64
time make WHAT=cmd/kube-apiserver KUBE_BUILD_PLATFORMS=linux/arm64
time make WHAT=cmd/kubelet KUBE_BUILD_PLATFORMS=linux/amd64
time make WHAT=cmd/kubelet KUBE_BUILD_PLATFORMS=linux/arm64
# 编译 kubelet 需要
yum install -y gcc-aarch64-linux-gnu
_output/local/bin/linux/amd64/kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"30", GitVersion:"v1.30.0", GitCommit:"7c48c2bd72b9bf5c44d21d7338cc7bea77d0ad2a", GitTreeState:"archive", BuildDate:"2024-04-30T12:40:56Z", GoVersion:"go1.22.2", Compiler:"gc", Platform:"linux/amd64"}
mkdir -p kubeadm1.30.0y99/arm64 kubeadm1.30.0y99/amd64
\cp -f _output/local/bin/linux/amd64/kubeadm kubeadm1.30.0y99/amd64
\cp -f _output/local/bin/linux/arm64/kubeadm kubeadm1.30.0y99/arm64
tar czfv kubeadm1.30.0y99.tgz kubeadm1.30.0y99
# sed -i 's/365$/36500/g' cmd/kubeadm/app/constants/constants.go
#sed -i 's/duration365d \* 10)/duration365d * 100)/g' ‘s/maxAge := 100 * time.Hour * 24 * 365/maxAge := time.Hour * 24 * 365/g’ staging/src/k8s.io/client-go/util/cert/cert.go
---
或自动打patch
cat > kubeadm-y99.patch <<EOF
--- cmd/kubeadm/app/constants/constants.go 2023-09-11 02:16:02.069251723 +0800
+++ cmd/kubeadm/app/constants/constants.go 2023-09-11 02:36:27.965169914 +0800
@@ -48,7 +48,7 @@ const (
// CertificateBackdate defines the offset applied to notBefore for CA certificates generated by kubeadm
CertificateBackdate = time.Minute * 5
// 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"
--- staging/src/k8s.io/client-go/util/cert/cert.go 2023-09-11 02:22:06.077237127 +0800
+++ staging/src/k8s.io/client-go/util/cert/cert.go 2023-09-11 02:38:01.553161287 +0800
@@ -77,7 +77,7 @@ func NewSelfSignedCACert(cfg Config, key
},
DNSNames: []string{cfg.CommonName},
NotBefore: notBefore,
- NotAfter: now.Add(duration365d * 10).UTC(),
+ NotAfter: now.Add(duration365d * 100).UTC(),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign,
BasicConstraintsValid: true,
IsCA: true,
EOF
patch -p0 < kubeadm-y99.patch
# 手动修改
vi cmd/kubeadm/app/constants/constants.go
CertificateValidity = time.Hour * 24 * 365
CertificateValidity = 100 * time.Hour * 24 * 365
vi staging/src/k8s.io/client-go/util/cert/cert.go
NotAfter: now.Add(duration365d * 10).UTC(),
NotAfter: now.Add(duration365d * 100).UTC(),
vi staging/src/k8s.io/client-go/util/cert/cert.go
maxAge := time.Hour * 24 * 365
maxAge := 100 * time.Hour * 24 * 365
# 制作 patch
diff -up cmd/kubeadm/app/constants/constants.go.origin cmd/kubeadm/app/constants/constants.go > kubeadm-y99p.patch
diff -up staging/src/k8s.io/client-go/util/cert/cert.go.origin staging/src/k8s.io/client-go/util/cert/cert.go >> kubeadm-y99p.patch
补充说明:API 接口也有一个1年有效期的硬编码,以上修改也修复了 https://github.com/kubernetes/kubernetes/issues/86552
staging/src/k8s.io/client-go/util/cert/cert.go
maxAge := time.Hour * 24 * 365
编译 kubeadm 99年证书
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- master节点修改默认证书期限(仅在master节点操作) 1. 拉取源码 2. 切换到需要的 k8s 版本 3...
- 一、实验环境 操作系统: CentOS7.2 Minimal k8s-master(serverA): 192.1...
- https://blog.csdn.net/weixin_44666068/article/details/101...
- 部署kubeadm、kubectl、kubelet 1.添加yum源 2.安装kubeadm、kubectl、ku...