我指的是以下几个安装包:
-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