1. 程式人生 > >自己編譯生成k8s的rpm包

自己編譯生成k8s的rpm包

ont for oda 服務 cto put -i ews str

我指的是以下幾個安裝包:

-rw-r--r--. 1 root root 8976134 Jul 13 10:19 kubeadm-1.7.0-0.x86_64.rpm
-rw-r--r--. 1 root root 9362110 Jul 13 10:19 kubectl-1.7.0-0.x86_64.rpm
-rw-r--r--. 1 root root 17238982 Jul 13 10:19 kubelet-1.7.0-0.x86_64.rpm
-rw-r--r--. 1 root root 7800450 Jul 13 10:19 kubernetes-cni-0.5.1-0.x86_64.rpm

===============================

參考說法:

官方的文檔頁面更新並不及時,同時他的 yum 源更新也很慢,再者…那他媽可是 Google 的服務器,能特麽連上嗎?以前總是在國外服務器使用 yumdownloader 下載,然後 scp 到本地,雖然能解決問題,但是蛋碎一地…最後找到了源頭,如下

Kubernetes 編譯的各種發行版安裝包來源於 Github 上的另一個叫 release 的項目,地址 點這裏,把這個項目 clone 下來,由於本人是 CentOS 用戶,所以進入 rpm 目錄,在安裝好 docker 的機器上執行那個 docker-build.sh 腳本即可編譯 rpm 包,最後會生成到當前目錄的 output

目錄下,截圖如下

https://github.com/kubernetes/release ==================================================== 這樣,用kubeadm安裝之前,rpm就可以先安裝好啦。多,快,好,省! 有一個地方註意,默認會自動編譯所有平臺的,如果只要amd-x64,可以更改一下entry.sh文件,把其它平臺去掉。加快時間。 當然,前提是要準備好fedora:24這個docker鏡像文件喲。
#!/bin/sh
# Entrypoint for the build container to create the rpms and yum
repodata: # Usage: ./entry.sh GOARCH/RPMARCH,GOARCH/RPMARCH,.... set -e declare -a ARCHS if [ $# -gt 0 ]; then IFS=,; ARCHS=($1); unset IFS; else #GOARCH/RPMARCH ARCHS=( amd64/x86_64 arm/armhfp arm64/aarch64 ppc64le/ppc64le s390x/s390x ) fi for ARCH in ${ARCHS[@]}; do IFS=/ read GOARCH RPMARCH<<< ${ARCH}; unset IFS; SRC_PATH="/root/rpmbuild/SOURCES/${RPMARCH}" mkdir -p ${SRC_PATH} cp -r /root/rpmbuild/SPECS/* ${SRC_PATH} echo "Building RPM‘s for ${GOARCH}....." sed -i "s/\%global ARCH.*/\%global ARCH ${GOARCH}/" ${SRC_PATH}/kubelet.spec # Download sources if not already available cd ${SRC_PATH} && spectool -gf kubelet.spec /usr/bin/rpmbuild --target ${RPMARCH} --define "_sourcedir ${SRC_PATH}" -bb ${SRC_PATH}/kubelet.spec mkdir -p /root/rpmbuild/RPMS/${RPMARCH} createrepo -o /root/rpmbuild/RPMS/${RPMARCH}/ /root/rpmbuild/RPMS/${RPMARCH} done

技術分享技術分享

自己編譯生成k8s的rpm包