3. 配置Kubernetes开发环境

  • 概述
  • 1. 在Docker环境中编译Kubernetes
    • 1.1. 安装依赖
    • 1.2. 关键脚本
    • 1.3. 基本流程
    • 1.4. 执行编译
  • 2. 本地分布式开发环境搭建

概述

Kubernetes对golang版本有要求, 具体见 Kubernetes Development Guide

如果是在MAC上操作,因为MAC的shell命令是BSD风格的,因此需要安装GNU command tools。

brew install coreutils
brew install gnu-tar

https://github.com/kubernetes/community/blob/master/contributors/devel/development.md

https://github.com/kubernetes/kubernetes/tree/master/build

1. 在Docker环境中编译Kubernetes

k8s推荐使用的方式

参照: http://releases.k8s.io/HEAD/build/README.md

  • Docker for Mac安装见 https://docs.docker.com/docker-for-mac/install/ . 注: Docker VM最少4.5G, 否则可能build失败
  • Linux环境安装Docker

使用国内镜像源

https://docker.mirrors.ustc.edu.cn
https://hub-mirror.c.163.com

1.1. 安装依赖

Kubernetes的脚本采用新的GNU工具, Linux一般自带了.

mac一般要重装

# brew install gnu-tar  

1.2. 关键脚本

build/目录中包含以下脚本。请注意,必须从Kubernetes根目录运行所有脚本。

  • build/run.sh:在构建docker容器中运行命令。常见的调用:
    • build/run.sh make:在容器中只构建linux二进制文件。
    • build/run.sh make cross:为所有平台构建所有二进制文件
    • build/run.sh make kubectl KUBE_BUILD_PLATFORMS=darwin/amd64:构建用于特定平台(这里是二进制kubectl和darwin/amd64)
    • build/run.sh make test:运行所有单元测试
    • build/run.sh make test-integration:运行集成测试
    • build/run.sh make test-cmd:运行CLI测试
  • build/copy-output.sh:这会将_output/dockerized/binDocker容器中的内容复制到本地_output/dockerized/bin。它还将复制出作为构建过程的一部分生成的特定文件模式。这是作为一部分自动运行的build/run.sh。
  • build/make-clean.sh:清除内容_output,删除任何本地构建的容器映像并删除数据容器。
  • build/shell.sh:bash使用当前repo代码的快照放入构建容器中的shell。

1.3. 基本流程

直接下的脚本build/用于构建和测试。他们将确保kube-build构建Docker镜像(基于build/build\-image/Dockerfile),然后在该容器中执行适当的命令。这些脚本将确保从运行中缓存正确的数据以进行增量构建,并将结果从容器中复制回来。

构建该kube-build容器镜像, 首先在_output/images/build-image下创建“context”目录。苟江过程是在那里完成的,而不是在Kubernetes仓库的根部,以最小化我们在构建映像时需要打包的数据量。

从该image运行有3个不同的容器实例

  • 第一个是“data”容器,用于存储需要持久保存以支持增量构建的所有数据
  • 一个“rsync”容器,用于将数据传入导出到data容器。
  • 一个“build”容器,用于实际执行构建操作

数据容器在运行期间保持不变,而每次使用后都会删除rsync和build容器

rsync在后台透明地使用,以有效地将数据移入和移出容器。这将使用Docker选择的短暂端口。您可以通过设置KUBE_RSYNC_PORTenv变量来修改它。

所有Docker名称都带有从文件路径派生的哈希(允许在CI机器之类的内容上同时使用)和版本号。当版本号更改时,将清除所有状态并开始清理构建。这允许更改构建基础结构并向CI系统发送需要删除旧工件的信号。

1.4. 执行编译

切换目录到kuberentes源码的根目录下执行:

./build/run.sh make

可以在docker中执行跨平台编译出二进制文件。

需要用的的docker镜像, 可以用下面的加速地址获取镜像:

gcr.io/google_containers/kube-cross:v1.11.13-1

gcr.azk8s.cn/google_containers/kube-cross:v1.11.13-1

查看具体的tag

# cat build/build-image/cross/VERSION
v1.11.13-1

该镜像基于Ubuntu构建,大小2.15G,编译环境中包含以下软件:

  • Go1.7.5
  • etcd
  • protobuf
  • g++
  • 其他golang依赖包

在我自己的电脑上的整个编译过程大概要半个小时。

编译完成的二进制文件在/_output/local/go/bin/目录下。

2. 本地分布式开发环境搭建

在本地golang环境构建Kubernetes.

参见: https://github.com/kubernetes/community/blob/master/contributors/devel/development.md

你可能感兴趣的:(3. 配置Kubernetes开发环境)