githubのダウンロード出典:https://github.com/kubernetes/kubernetes
ダウンロードは、ソースコードのバージョンをリリースすることを期待し、ここで私のダウンロードv1.16.3
注:tar.gz形式のバージョンをダウンロードしてください
開梱し、ソースコードを変更
タール-xzvf v1.16.2.tar.gz
ルートディレクトリの変更ファイルcert.go
vimの./staging/src/k8s.io/client-go/util/cert/cert.go
#这个方法里面[NotAfter]の:now.Add(duration365d * 10).UTC()
#默认有效期就是10年、改成100年
FUNC NewSelfSignedCACert(CFG構成、キーcrypto.Signer)(* x509.Certificate、エラー){
今:= time.Now()
TMPL:= {x509.Certificate
のSerialNumber:新しい(big.Int).SetInt64(0)、
件名:pkix.Name {
のCommonName:cfg.CommonName、
組織:cfg.Organization、
}、
notBeforeの: now.UTC()、
// [NotAfter]の:now.Add(duration365d * 10).UTC()、
[NotAfter]の:now.Add(duration365d * 100).UTC()、
のKeyUsage:x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign、
BasicConstraintsValid:真、
ISCA:真、
}
certDERBytes、ERR = x509.CreateCertificate(cryptorand.Reader、&TMPL、&TMPL、key.Public()、キー)
!場合ERR =ゼロ{
戻りnilは、ERR
}
x509.ParseCertificate(certDERBytes)を返します
vimのCMD / kubeadm /アプリ/ utilに/ pkiutil / pki_helpers.go
#このメソッドの内部は[NotAfter]の:. Time.now()の追加(kubeadmconstants.CertificateValidity).UTC()を参照するために
、一定のkubeadmconstants.CertificateValidityのある#パラメータ
が変更することはできませんので、#を、私はこの定数を見つけることができないソースを見に行きました位置割り当て
NewSignedCert FUNC(CFG * certutil.Config、キー crypto.Signer、caCert * x509.Certificate、ケーキ状crypto.Signer)(* x509.Certificate、エラー){シリアル、ERR = cryptorand.Int(cryptorand.Reader、 新しい新しい(big.Int).SetInt64(math.MaxInt64))
IF ERR!=ゼロ{
リターンゼロ、ERR
}
lenのIF(cfg.CommonName)== 0 {
リターンゼロ、errors.New( "のCommonName Aを指定しなければなりません")
}
(cfg.Usages)== 0 {lenのIF
リターンゼロ、errors.New( "少なくとも1つExtKeyUsage MUSTを指定")
}
certtmpl:= {x509.Certificate
件名:{pkix.Name
CommonName:cfg.CommonName、
組織:cfg.Organization、
}、
DNSNames:cfg.AltNames.DNSNames、
するIPアドレス:cfg.AltNames.IPs、
のSerialNumber:シリアル、
notBeforeの:caCert.NotBefore、
[NotAfter]の:time.Now()を追加し(。kubeadmconstants.CertificateValidity).UTC()、
のKeyUsage:x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature、
ExtKeyUsage:cfg.Usages、
}
certDERBytes、ERR = x509.CreateCertificate(cryptorand.Reader、&certTmpl、caCert、key.Public()、ケーキ状)
ERR =ゼロ{なら!
リターンゼロ、ERR
}
戻りX509。 ParseCertificate(certDERBytes)
}
ここで得られた結果は、kubeadmconstants.CertificateValidityを定義しています
vimの./cmd/kubeadm/app/constants/ constants.go // 就是这个常量定义CertificateValidity、我改成* 100年 のconst ( // KubernetesDirは、さまざまな設定を格納するファイルのためのKubernetesが所有しているディレクトリです KubernetesDir = " の/ etc / kubernetes " // ManifestsSubDirNameを格納するディレクトリ名を定義するマニフェスト ManifestsSubDirName = " マニフェスト" // TempDirForKubeadmはkubeadmのための一時ディレクトリを定義 //はKubernetesDirと結合されなければならない。 TempDirForKubeadm = " TMP " // CertificateValidityはkubeadmによって生成されたすべての署名された証明書の有効性を定義 // CertificateValidity = time.Hour * 24 * 365 * 100 CertificateValidity = time.Hour * 24 * 365 // CACertAndKeyBaseNameは、認証局のベース名を定義します CACertAndKeyBaseNameを= " CA " // CACertNameは、証明書の名前を定義します CACertNameを= " ca.crt " // CAKeyNameは、証明書の名前を定義します CAKeyName = " ca.keyを"
ソースコードは、良い方向に変化して、次のステップはkubeadmをコンパイルすることです
第二に、コンパイルkubeadm
最初にサーバーの設置環境、コンパイルmakeメソッド、さまざまなエラーの結果を移動しよう。あなただけの、情報を見つけるためにインターネットを通じて、コンテナ、コンテナ内のコンパイラをダウンロードしようとするコードコンパイラを実行するための容器が提供k8s.gcr.io/kube-crossことを公式サイトを見つけることができます。
ない壁の向こう、そうでない場合は、ユーザーの壁を超える、https://hub.docker.com KUBE-クロスキーワード検索に、私はmirrorgooglecontainersの新しいバージョンを見つけた私ができるので/ KUBE-クロス:v1.12.10-1ミラー内部のミラーがバージョンv1.12.10-1環境です行く必要があります。
注:使用mirrorgooglecontainers / KUBE-クロス:v1.12.10-1コンパイルする前に、私は、バージョンは、ミラーを行くv.1.11.xダウンロードしようとした場合、コンパイラは、おそらくそれは、私はソースコードがkubernetes v1の必要があり、ダウンロードを意味し、文句を言うでしょう。 12.xのは、コンパイルします。
ミラープル
ドッキングウィンドウプルmirrorgooglecontainers / KUBE-クロス:v1.12.10-1
#ファイル名を指定して実行容器、容器の内部へ あなたがソースコードkubernetesルートディレクトリを変更した後、ドッキングウィンドウの実行--rm -it -v:/go/src/k8s.io/kubernetes \ mirrorgooglecontainers / KUBE-クロス:v1.12.10-1のbash 容器の内側にマウントする#カドミウムパス、-alは、ファイル内部を見ることができLSは、ソースファイルのディレクトリをマウントするホストではありません CDの/go/src/k8s.io/kubernetes #コンパイラkubeadm、ここでは主にコンパイルkubeadmへ すべてWHAT = CMD / kubeadm GOFLAGS = -vを作ります #コンパイラkubelet #作るすべてWHAT = CMD / kubelet GOFLAGS = -v #コンパイラkubectl #作るすべてWHAT = CMD / kubectl GOFLAGS = -v #コンパイラ_output / binに/ kubeadmディレクトリで完成した製品、 ソフトリンクを使用することである#ビン
コンパイルが成功したら、コンテナを終了することができ、あなたは、マウントパスがkubeadmコンパイルされている見ることができます
パス./_output/local/bin/linux/amd64/kubeadm
第三に、スワップはkubeadmを交換するために使用されています
#Kubeadmファイルは、元のkubeadmをコピーしているシステムに置き換えられます CPは/ usr / binに/ kubeadmは/ usr / binに/ kubeadm.bak CPの_output / local / binに/ linuxの/ AMD64 / kubeadmは/ usr / binに/ kubeadm
第四には、コマンドは、証明書を更新実行します
あなたはには/ etc / kubernetes / PKI証明書、証明書をバックアップすることができ、私がバックアップするここにいませんよ
1、証明書の有効期限が切れるチェック
kubeadmアルファ本命チェックインの有効期限
図2に示すように、パラメータを表示するために使用できる証明書を更新します
kubeadmアルファ本命すべての更新
kubeadmアルファ本命チェックインの有効期限を
オリジナル:https://blog.csdn.net/fuck487/article/details/102759523