前言
本文介绍如何从源代码构建 k8s 二进制安装包
准备工作
操作系统 cenos7.x
安装 docker
参考 官网 或网上各路教程
下载源代码
- $ cd /opt/
- $ git clone https://github.com/kubernetes/kubernetes.git
checkout
$ cd /opt/kubernetes
$ git checkout v1.8.4 -b v1.8.4
准备基础 docker 镜像
如果直接构建的话会发现会卡在那动不了,原因是构建脚本会从 gcr(google container registry)拉取构建需要的基础镜像,而且是强制拉取...,如果没有 VPN 的话就悲剧了。有两种方法:
这里仅介绍方法 2
- $ docker pull mirrorgooglecontainers/kube-cross:v1.8.3-2
- $ docker tag mirrorgooglecontainers/kube-cross:v1.8.3-2 gcr.io/google_containers/kube-cross:v1.8.3-2
- $ docker pull mirrorgooglecontainers/debian-iptables-amd64:v8
- $ docker tag mirrorgooglecontainers/debian-iptables-amd64:v8 gcr.io/google_containers/debian-iptables-amd64:v8
修改 build/lib/release.sh
去掉 docker build 命令的 --pull 选项,不然还是会从 gcr 拉取镜像...
- index 3134e4d..e1881b4 100644
- --- a/build/lib/release.sh
- +++ b/build/lib/release.sh
- @@ -323,7 +323,7 @@ function kube::release::create_docker_images_for_server() {
- ln ${binary_dir}/${binary_name} ${docker_build_path}/${binary_name}
- printf " FROM ${base_image} \n ADD ${binary_name} /usr/local/bin/${binary_name}\n" > ${docker_file_path}
- - "${DOCKER[@]}" build --pull -q -t "${docker_image_tag}" ${docker_build_path} >/dev/null
- + "${DOCKER[@]}" build -q -t "${docker_image_tag}" ${docker_build_path} >/dev/null
- "${DOCKER[@]}" save "${docker_image_tag}" > "${binary_dir}/${binary_name}.tar"
- echo "${docker_tag}" > ${binary_dir}/${binary_name}.docker_tag
- rm -rf ${docker_build_path}
构建
- cd /opt/kubernetes
- make quick-release
注意:quick-release 仅构建当前系统版本(例如 linux-amd64)
构建完成后会在 /opt/kubernetes/_output/release-tarts 目录下生成 k8s 二进制安装包:
- kubernetes-client-linux-amd64.tar.gz(客户端命令行工具)
- kubernetes-server-linux-amd64.tar.gz(master 和 node 节点 k8s 服务程序)
- kubernetes-src.tar.gz(k8s 源代码包)
- kubernetes.tar.gz(master 和 node 节点 k8s 基础包)