kubernetes 代码编译

编译系统

[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值