久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

kubernetes開發(fā)環(huán)境如何構建

189次閱讀
沒有評論

共計 3214 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要講解了“kubernetes 開發(fā)環(huán)境如何構建”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“kubernetes 開發(fā)環(huán)境如何構建”吧!

開發(fā)環(huán)境構建 Fork

把 github.com/kubernetes/kubernetes 項目 fork 到自己的倉庫

Clone 到本地

git clone https://github.com/ your-username /kubernetes

設置 remote

git remote add upstream https://github.com/kubernetes/kubernetes.git
git remote set-url --push upstream no-pushing

注意此時你的本地倉庫就有了兩個遠程倉庫,一個叫 upstream(社區(qū)倉庫) 一個叫 origin(你 fork 的)

代碼同步

當社區(qū)倉庫代碼更新時,我們希望與之同步,那么:

git pull upstream master #  先同步到本地
git push # push  到 origin

你修改了代碼希望同步給社區(qū),那么 PR 即可

分支管理

假設我們要定制一個功能,比如我之前做的對 kubelet 進行 lxcfs 增強,而我們線上又運行了多個版本的 k8s,我們希望這個特性幾個版本都可以加上,而且未來 k8s 發(fā)布新版本時同樣能 merge 進去這功能。

要做到這個 git 里的兩個命令非常重要:

git cherry-pick 能指定 merge 特定的變更

git rebase 通常我用來合并多個 commit, 雖然 cherry-pick 也支持多個 commit,但是多了容易混亂

首先從 master 分支 HEAD 切出一個分支,我們有所的功能開發(fā)在這個分支上進行,如我做了 c1 c2 兩次 commit。

然后希望把這個功能 merge 到 2.0 版本中,我們先從 2.0 的 tag 切一個分支出來,然后在這個分之上去 cherry-pick c1 c2 即可,非常簡單方便,其它版本需要此功能同理。

這里注意,如果不用 cherry-pick 直接 merge 的話,因為 2.0 版本之后還有很多次變更,會產(chǎn)生大量沖突。

CI 編譯與發(fā)布

筆者比較喜歡 drone,所以編譯與發(fā)布都是用的 drone,安利個 drone 免費公有服務非常好用

 由于 k8s 各個版本可能需要的 golang 版本都不太一樣,所以最方便的還是在容器中進行構建,但并不是隨便一個 golang 的鏡像都可以進行構建,因為 k8s 還需要拷貝代碼,生成代碼等依賴了一些小工具,我這里提供了一個官方的編譯鏡像:fanux/kube-build:v1.12.1-2
發(fā)布時用了 drone 一個非常方便的插件:plugins/github-release,  可以直接把二進制文件放到 github 的 release pages 里 

.drone.yml 長這樣:

kind: pipeline
name: default
workspace:
 base: /go
 path: src/k8s.io/kubernetes #  要注意工作目錄一定要寫這個
steps:
- name: build #  編譯,名字隨便寫
 image: fanux/kube-build:v1.12.1-2 
 environment: 
 GO111MODULE: on #  啟動 go mod
 commands:
 - make generated_files UPDATE_API_KNOWN_VIOLATIONS=true #  這個是一個 known api 校驗,不加編譯可能會報錯
 - KUBE_GIT_TREE_STATE= clean  KUBE_GIT_VERSION=v1.14.0 KUBE_BUILD_PLATFORMS=linux/amd64 make all WHAT=cmd/kubelet GOFLAGS=-v #  幾個環(huán)境變量特別重要,如不加 clean 編譯出來版本號就會加 dirty 后綴,需要加版本號不然很多時候無法正常工作,加構建平臺,這樣無需編譯多個 bin 文件加快編譯速度,WHAT 里指定需要編譯什么代碼,大部分情況無需編譯有所組件
 - ls _output/bin/ #  這里能看到編譯后的二進制文件
- name: publish
 image: plugins/github-release
 settings:
 api_key: 
 from_secret: git-release-token
 files: _output/bin/kubelet #  把上一步二進制文件放到 release page 中
 title: ${DRONE_TAG} #  使用你打的 tag 作為標題
 note: Note.md #  指定一個文件說明你 release 中干了啥
 when:
 event: tag

這樣提交代碼后刷刷抖音等結果即可。。

實踐案例

k8s kubeadm 默認證書的時間是一年,我希望延長到 99 年,這樣就需要定制化開發(fā),那么問題來了,因為版本眾多,是不是需要每個版本都去改一下,那太麻煩了,正確的做法如下:

從 master 切出一個分支

git checkout -b kubeadm

修改代碼并 commit

commit 6d16c60ca5ce8858feeabca7a3a18d59e642ac3f (HEAD -  kubeadm)
Author: fanux  fhtjob@hotmail.com 
Date: Mon Mar 18 20:26:08 2019 +0800
 kubeadm with long cert
commit 364b18cb9ef1e8da2cf09f33d0fd8042de6b327e (upstream/master, origin/master, origin/HEAD, master)

可以看到我們 commit 了一次,現(xiàn)在只需要把 6d16c60ca 這個變化 merge 到各版本即可

merge 到 1.13.4 版本中

git checkout -b v1.13.4 v1.13.4
git cherry-pick 6d16c60ca5c

注意 這次 commit 如果修改了相同文件的行還是可能會沖突的,需要手動解決一下沖突

解決完沖突 commit 即可

? kubernetes git:(v1.13.4) ? git add .
? kubernetes git:(v1.13.4) ? git commit -m  v1.13.4-cert 
[v1.13.4 1bd2e627f5] v1.13.4-cert
 Date: Mon Mar 18 20:26:08 2019 +0800
 4 files changed, 42 insertions(+), 3 deletions(-)
 create mode 100644 .drone.yml
 create mode 100644 Note.md
? kubernetes git:(v1.13.4) git tag v1.13.4-cert
? kubernetes git:(v1.13.4) git push --tags

其它注意事項

要 PR 給社區(qū)的話需要 CLA 認證一下, 不然你的 PR 社區(qū)是不管的。

CI 加的一些文件如.drone.yml dockerfile 等與實際功能的添加最好分開,方便 PR 時只 PR 實際需要的代碼。

其它組件與 apiserver scheduler 可以 CI 直接打成 docker 鏡像,drone 很靈活,不要用死了

感謝各位的閱讀,以上就是“kubernetes 開發(fā)環(huán)境如何構建”的內容了,經(jīng)過本文的學習后,相信大家對 kubernetes 開發(fā)環(huán)境如何構建這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計3214字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 禹州市| 贵州省| 全州县| 盱眙县| 东乡县| 英山县| 龙门县| 拉孜县| 蛟河市| 嵩明县| 湖南省| 巩义市| 台湾省| 荥经县| 浏阳市| 商洛市| 莱州市| 革吉县| 武义县| 望城县| 榆林市| 虹口区| 浦北县| 革吉县| 若尔盖县| 东乡| 通化县| 海淀区| 仙游县| 台北市| 金堂县| 阳西县| 龙南县| 九江县| 十堰市| 上虞市| 邢台县| 城口县| 义乌市| 吴忠市| 婺源县|