编译系统
[root@kubernetes-build kubernetes]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
编译的分支
[root@kubernetes-build kubernetes]# git status
# 头指针分离于 v1.7.6-custom
无文件要提交,干净的工作区
所需的镜像
[root@kubernetes-build kubernetes]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/debian jessie 25fc9eb3417f 5 months ago 123.4 MB
docker.io/busybox latest 6ad733544a63 5 months ago 1.129 MB
gcr.io/google-containers/debian-iptables-amd64 v7 88cbec663b04 9 months ago 44.99 MB
gcr.io/google_containers/kube-cross v1.8.3-1 53561898c32d 11 months ago 1.879 GB
所在编译目录
[root@kubernetes-build kubernetes]# pwd
/root/build/src/k8s.io/kubernetes
[root@kubernetes-build kubernetes]# ls -l
总用量 880
drwxr-xr-x. 4 root root 73 12月 1 08:05 api
drwxr-xr-x. 13 root root 4096 12月 1 08:05 build
lrwxrwxrwx. 1 root root 21 12月 1 07:55 BUILD.bazel -> build/root/BUILD.root
-rw-r--r--. 1 root root 808363 12月 1 08:05 CHANGELOG.md
drwxr-xr-x. 21 root root 4096 4月 21 15:48 cluster
drwxr-xr-x. 23 root root 4096 12月 1 08:05 cmd
-rw-r--r--. 1 root root 257 12月 1 07:55 code-of-conduct.md
-rw-r--r--. 1 root root 290 12月 1 07:55 CONTRIBUTING.md
drwxr-xr-x. 11 root root 205 12月 1 08:05 docs
drwxr-xr-x. 31 root root 4096 12月 1 08:05 examples
drwxr-xr-x. 13 root root 217 12月 1 08:05 federation
drwxr-xr-x. 2 root root 55 4月 21 15:48 Godeps
drwxr-xr-x. 11 root root 8192 4月 21 15:48 hack
drwxr-xr-x. 2 root root 24 12月 1 08:05 hooks
-rw-r--r--. 1 root root 6844 12月 1 08:05 labels.yaml
-rw-r--r--. 1 root root 11358 12月 1 07:55 LICENSE
drwxr-xr-x. 2 root root 4096 12月 1 07:55 logo
lrwxrwxrwx. 1 root root 19 12月 1 07:55 Makefile -> build/root/Makefile
lrwxrwxrwx. 1 root root 35 12月 1 07:55 Makefile.generated_files -> build/root/Makefile.generated_files
-rw-r--r--. 1 root root 275 12月 1 08:05 OWNERS
-rw-r--r--. 1 root root 1292 12月 1 08:05 OWNERS_ALIASES
drwxr-xr-x. 41 root root 4096 12月 1 08:05 pkg
drwxr-xr-x. 4 root root 55 12月 1 08:05 plugin
-rw-r--r--. 1 root root 3242 12月 1 08:05 README.md
drwxr-xr-x. 3 root root 122 12月 1 08:05 staging
drwxr-xr-x. 12 root root 231 12月 1 08:05 test
drwxr-xr-x. 7 root root 97 12月 1 08:05 third_party
drwxr-xr-x. 4 root root 68 12月 1 08:05 translations
-rw-r--r--. 1 root root 11898 12月 1 07:55 Vagrantfile
drwxr-xr-x. 12 root root 204 4月 21 15:48 vendor
lrwxrwxrwx. 1 root root 20 12月 1 07:55 WORKSPACE -> build/root/WORKSPACE
开始编译
[root@kubernetes-build kubernetes]# build/run.sh make
+++ [0421 16:15:08] Verifying Prerequisites....
+++ [0421 16:15:08] Building Docker image kube-build:build-f72bf2804a-5-v1.8.3-1
...
Env for linux/amd64: GOOS=linux GOARCH=amd64 GOROOT=/usr/local/go CGO_ENABLED= CC=
+++ [0421 16:41:36] Placing binaries
+++ [0421 16:42:10] Syncing out of container
+++ [0421 16:42:10] Stopping any currently running rsyncd container
+++ [0421 16:42:10] Starting rsyncd container
+++ [0421 16:42:10] Running rsync
+++ [0421 16:42:37] Stopping any currently running rsyncd container
[root@kubernetes-build hyperkube]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c201b487d3a kube-build:build-f72bf2804a-5-v1.8.3-1 "make" 22 minutes ago Up 22 minutes kube-build-f72bf2804a-5-v1.8.3-1
编译很久,大概要半个多小时
打镜像
[root@kubernetes-build hyperkube]# pwd
/root/build/src/k8s.io/kubernetes/cluster/images/hyperkube
[root@kubernetes-build hyperkube]# make VERSION=1.7.6 ARCH=amd64
cp -r ./* /tmp/hyperkubempQGgn
mkdir -p /tmp/hyperkubempQGgn/cni-bin
cp ../../../_output/dockerized/bin/linux/amd64/hyperkube /tmp/hyperkubempQGgn
chmod a+rx /tmp/hyperkubempQGgn/hyperkube
cd /tmp/hyperkubempQGgn && sed -i.back "s|ARCH||g" Dockerfile
cd /tmp/hyperkubempQGgn && sed -i.back "s|BASEIMAGE|debian:jessie|g" Dockerfile
cd /tmp/hyperkubempQGgn && sed -i.back "s|CACHEBUST|57aaa175-656a-4880-bbc2-ee3c55a7f946|g" Dockerfile
# When building "normally" for amd64, remove the whole line, it has no part in the amd64 image
cd /tmp/hyperkubempQGgn && sed -i "/CROSS_BUILD_/d" Dockerfile
# Download CNI
curl -sSL --retry 5 https://storage.googleapis.com/kubernetes-release/network-plugins/cni-amd64-0799f5732f2a11b329d9e3d51b9c8f2e3759f2ff.tar.gz | tar -xz -C /tmp/hyperkubempQGgn/cni-bin
docker build --pull -t gcr.io/google_containers/hyperkube-amd64:1.7.6 /tmp/hyperkubempQGgn
Sending build context to Docker daemon 267.6 MB
Step 1 : FROM debian:jessie
Trying to pull repository docker.io/library/debian ...
jessie: Pulling from docker.io/library/debian
3d77ce4481b1: Pull complete
Digest: sha256:f29d0c98d94d6b2169c740d498091a9a8545fabfa37f2072b43a4361c10064fc
---> 4eb8376dc2a3
Step 2 : RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && DEBIAN_FRONTEND=noninteractive apt-get -yy -q install iptables ebtables ethtool ca-certificates conntrack util-linux socat git jq nfs-common glusterfs-client cifs-utils && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get autoremove -y && DEBIAN_FRONTEND=noninteractive apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # 57aaa175-656a-4880-bbc2-ee3c55a7f946
---> Running in b5222dd7c145
Get:1 http://security.debian.org jessie/updates InRelease [94.4 kB]
...
...
...
---> 9029eeadb3b1
Removing intermediate container 55c9736c87e5
Successfully built 9029eeadb3b1
rm -rf "/tmp/hyperkubempQGgn"
[root@kubernetes-build hyperkube]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55c9736c87e5 09eb6fed903c "/bin/sh -c 'apt-get " 2 seconds ago Up 1 seconds ecstatic_bohr
编译结果
gcr.io/google_containers/hyperkube-amd64:1.7.6 这个镜像就是目标镜像了
root@kubernetes-build hyperkube]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gcr.io/google_containers/hyperkube-amd64 1.7.6 9029eeadb3b1 35 seconds ago 697.6 MB
docker.io/debian jessie 4eb8376dc2a3 6 weeks ago 126.7 MB
kube-build build-f72bf2804a-5-v1.8.3-1 c8e28704ef8f 7 weeks ago 2.274 GB
docker.io/debian <none> 25fc9eb3417f 7 months ago 123.4 MB
docker.io/busybox latest 6ad733544a63 7 months ago 1.129 MB
gcr.io/google-containers/debian-iptables-amd64 v7 88cbec663b04 10 months ago 44.99 MB
gcr.io/google_containers/kube-cross v1.8.3-1 53561898c32d 12 months ago 1.879 GB
harbor.enncloud.cn/enncloud/kube-cross v1.8.3-1 53561898c32d 12 months ago 1.879 GB
参考:
hyperkube