91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kubernetes開發環境的構建

發布時間:2021-09-13 17:14:53 來源:億速云 閱讀:124 作者:chen 欄目:大數據

本篇內容主要講解“kubernetes開發環境的構建”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“kubernetes開發環境的構建”吧!

文章目錄

本文介紹如何對kubernetes進行二次開發,倉庫如何管理,git分支如何管理,怎樣利用CI去編譯與發布以及如何給社區貢獻代碼等,結合實際例子,望對大家有所幫助。

開發環境構建

kubernetes開發環境的構建

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.gitgit remote set-url --push upstream no-pushing

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

代碼同步

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

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

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

分支管理

kubernetes開發環境的構建

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

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

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

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


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

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

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

CI編譯與發布

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

kubernetes開發環境的構建

由于k8s各個版本可能需要的golang版本都不太一樣,所以最方便的還是在容器中進行構建,

但并不是隨便一個golang的鏡像都可以進行構建,因為k8s還需要拷貝代碼,

生成代碼等依賴了一些小工具,我這里提供了一個官方的編譯鏡像:

fanux/kube-build:v1.12.1-2


發布時用了drone一個非常方便的插件:plugins/github-release,

可以直接把二進制文件放到github的release pages里

.drone.yml 長這樣:

kind: pipelinename: defaultworkspace:    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  # 幾個環境變量特別重要,如不加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年,這樣就需要定制化開發,那么問題來了,因為版本眾多,是不是需要每個版本都去改一下,那太麻煩了,正確的做法如下:

從master切出一個分支

git checkout -b kubead

修改代碼并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了一次,現在只需要把6d16c60ca這個變化merge到各版本即可

merge到1.13.4版本中

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

注意 這次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 --tag

到此,相信大家對“kubernetes開發環境的構建”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

剑河县| 通化县| 丰台区| 汤原县| 磐石市| 德保县| 邢台县| 连平县| 和政县| 南汇区| 宣恩县| 会理县| 司法| 开原市| 通城县| 盐津县| 富蕴县| 新宾| 兰州市| 永定县| 长汀县| 黄浦区| 新竹县| 塘沽区| 安康市| 汶上县| 抚顺市| 礼泉县| 京山县| 成安县| 海南省| 东乌珠穆沁旗| 唐河县| 巴林左旗| 博白县| 棋牌| 故城县| 上饶县| 勐海县| 海盐县| 濮阳市|