日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解kubernetes開發(fā)流程

Kubernetes 是一個(gè)可移植的、可擴(kuò)展的開源平臺(tái),用于管理容器化的工作負(fù)載和服務(wù),可促進(jìn)聲明式配置和自動(dòng)化。 Kubernetes 擁有一個(gè)龐大且快速增長(zhǎng)的生態(tài)系統(tǒng)。Kubernetes 的服務(wù)、支持和工具廣泛可用。

創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、海棠網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為海棠等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

開發(fā)環(huán)境構(gòu)建

Fork

把github.com/kubernetes/kubernetes 項(xiàng)目fork到自己的倉(cāng)庫(kù)

Clone到本地

git clone https://github.com//kubernetes

設(shè)置remote

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

注意此時(shí)你的本地倉(cāng)庫(kù)就有了兩個(gè)遠(yuǎn)程倉(cāng)庫(kù),一個(gè)叫upstream(社區(qū)倉(cāng)庫(kù)) 一個(gè)叫origin(你fork的)

代碼同步

當(dāng)社區(qū)倉(cāng)庫(kù)代碼更新時(shí),我們希望與之同步,那么:

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

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

分支管理

假設(shè)我們要定制一個(gè)功能,比如我之前做的對(duì)kubelet進(jìn)行l(wèi)xcfs增強(qiáng),而我們線上又運(yùn)行了多個(gè)版本的k8s,我們希望這個(gè)特性幾個(gè)版本都可以加上,而且未來(lái)k8s發(fā)布新版本時(shí)同樣能merge進(jìn)去這功能。

要做到這個(gè)git里的兩個(gè)命令非常重要:

git cherry-pick 能指定merge特定的變更
git rebase 通常我用來(lái)合并多個(gè)commit, 雖然cherry-pick也支持多個(gè)commit,但是多了容易混亂

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

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

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

CI編譯與發(fā)布

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

由于k8s各個(gè)版本可能需要的golang版本都不太一樣,所以最方便的還是在容器中進(jìn)行構(gòu)建,但并不是隨便一個(gè)golang的鏡像都可以進(jìn)行構(gòu)建,因?yàn)閗8s還需要拷貝代碼,生成代碼等依賴了一些小工具,我這里提供了一個(gè)官方的編譯鏡像:fanux/kube-build:v1.12.1-2

發(fā)布時(shí)用了drone一個(gè)非常方便的插件:plugins/github-release, 可以直接把二進(jìn)制文件放到github的release pages里.drone.yml 長(zhǎng)這樣:

kind: pipeline
name: default
workspace:
   base: /go
   path: src/k8s.io/kubernetes  # 要注意工作目錄一定要寫這個(gè)

steps:
- name: build                    # 編譯,名字隨便寫
 image: fanux/kube-build:v1.12.1-2  
 environment:
   GO111MODULE: on              # 啟動(dòng)go mod
 commands:
     - make generated_files UPDATE_API_KNOWN_VIOLATIONS=true   # 這個(gè)是一個(gè)known api校驗(yàn),不加編譯可能會(huì)報(bào)錯(cuò)
     - KUBE_GIT_TREE_STATE="clean" KUBE_GIT_VERSION=v1.14.0 KUBE_BUILD_PLATFORMS=linux/amd64 make all WHAT=cmd/kubelet GOFLAGS=-v  # 幾個(gè)環(huán)境變量特別重要,如不加clean編譯出來(lái)版本號(hào)就會(huì)加dirty后綴,需要加版本號(hào)不然很多時(shí)候無(wú)法正常工作,加構(gòu)建平臺(tái),這樣無(wú)需編譯多個(gè)bin文件加快編譯速度,WHAT里指定需要編譯什么代碼,大部分情況無(wú)需編譯有所組件
     - ls  _output/bin/  # 這里能看到編譯后的二進(jìn)制文件

- name: publish
 image: plugins/github-release
 settings:
   api_key:
       from_secret: git-release-token
   files: _output/bin/kubelet   # 把上一步二進(jìn)制文件放到release page中
   title: ${DRONE_TAG}          # 使用你打的tag作為標(biāo)題
   note: Note.md                # 指定一個(gè)文件說(shuō)明你release中干了啥
   when:
       event: tag

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

實(shí)踐案例

k8s kubeadm默認(rèn)證書的時(shí)間是一年,我希望延長(zhǎng)到99年,這樣就需要定制化開發(fā),那么問(wèn)題來(lái)了,因?yàn)榘姹颈姸?,是不是需要每個(gè)版本都去改一下,那太麻煩了,正確的做法如下:

從master切出一個(gè)分支

git checkout -b kubeadm

修改代碼并commit

commit 6d16c60ca5ce8858feeabca7a3a18d59e642ac3f (HEAD -> kubeadm)
Author: fanux
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這個(gè)變化merge到各版本即可

merge到1.13.4版本中

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

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

解決完沖突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


文章題目:詳解kubernetes開發(fā)流程
鏈接URL:http://www.5511xx.com/article/djsepio.html