官术网_书友最值得收藏!

2.3 容器環(huán)境構建

通過容器(Docker)進行Kubernetes構建也非常簡單,Kubernetes提供了兩種容器環(huán)境下的構建方式:make release和make quick-release,它們之間的區(qū)別如下。

make release:構建所有的目標平臺(Darwin、Linux、Windows),構建過程會比較久,并同時執(zhí)行單元測試過程。

make quick-release:快速構建,只構建當前平臺,并略過單元測試過程。

make quick-release在Makefile中的定義如下:

make quick-release與make release相比多了兩個變量,即KUBE_RELEASE_RUN_TESTS和KUBE_FASTBUILD。KUBE_RELEASE_RUN_TESTS變量,將其設為n則跳過運行單元測試;KUBE_FASTBUILD變量,將其設為true則跳過跨平臺交叉編譯。通過這兩個變量可以實現(xiàn)快速構建,最終執(zhí)行build/release.sh腳本,運行容器環(huán)境構建。Kubernetes容器環(huán)境構建過程如圖2-2所示。

圖2-2 Kubernetes容器環(huán)境構建過程

在容器環(huán)境構建過程中,有多個容器鏡像參與其中,分別介紹如下。

build容器(kube-cross):即構建容器,在該容器中會對代碼文件執(zhí)行構建操作,完成后其會被刪除。

data容器:即存儲容器,用于存放構建過程中所需的所有文件。

rsync容器:即同步容器,用于在容器和主機之間傳輸數據,完成后其會被刪除。

下面介紹一下Kubernetes容器環(huán)境構建過程。

1.kube::build::verify_prereqs

進行構建環(huán)境的配置及驗證。該過程會檢查本機是否安裝了Docker容器環(huán)境,而對于Darwin平臺,該過程會檢查本機是否安裝了docker-machine環(huán)境。

2.kube::build::build_image

根據Dockerfile文件構建容器鏡像。Dockerfile文件來源于build/build-image/Dockerfile,代碼示例如下:

代碼路徑:build/common.sh

構建容器鏡像的流程如下。

● 通過mkdir命令創(chuàng)建構建鏡像的文件夾(即_output/images/…)。

● 通過cp命令復制構建鏡像所需的相關文件,如Dockerfile文件和rsyncd同步腳本等。

● 通過kube::build::docker_build函數,構建容器鏡像。

● 通過kube::build::ensure_data_container函數,運行存儲容器并掛載Volume。

● 通過kube::build::sync_to_container函數,運行同步容器并掛載存儲容器的Volume,然后通過rsync命令同步Kubernetes源碼到存儲容器的Volume。

3.kube::build::run_build_command make cross

此時,容器構建環(huán)境已經準備好,下面開始運行構建容器并在構建容器內部執(zhí)行構建Kubernetes源碼的操作,代碼示例如下:

代碼路徑:build/common.sh

在kube::build::run_build_command_ex函數中,通過${docker_cmd[@]}""${cmd[@]}命令執(zhí)行構建操作(即在容器內執(zhí)行make cross命令)。容器內的構建過程與本地環(huán)境下的構建過程相同,故不再贅述。

其中,構建的平臺由KUBE_SUPPORTED_SERVER_PLATFORMS變量控制,代碼示例如下:

代碼路徑:hack/lib/golang.sh

構建的組件由KUBE_SERVER_TARGETS變量控制,代碼示例如下:

代碼路徑:hack/lib/golang.sh

4.kube::build::copy_output

使用同步容器,將編譯后的代碼文件復制到主機上。

5.kube::release::package_tarballs

進行打包,將二進制文件打包到_output目錄中。

最終,代碼文件以tar.gz壓縮包的形式輸出至_output/release-tars文件夾。

主站蜘蛛池模板: 黄陵县| 莒南县| 理塘县| 洮南市| 乌什县| 沙田区| 垫江县| 东安县| 滦平县| 莱芜市| 武宣县| 峨山| 绥化市| 衡南县| 江都市| 新野县| 平和县| 南昌市| 通化市| 大厂| 竹溪县| 慈利县| 华容县| 贵南县| 隆安县| 石家庄市| 南通市| 香港| 定边县| 双鸭山市| 林口县| 合作市| 池州市| 毕节市| 西平县| 玛纳斯县| 奉节县| 河津市| 若尔盖县| 马山县| 柘城县|