面向 Kubernetes 開發(fā)者的設(shè)置指南
本設(shè)置指南主要面向正在或?qū)⒁獏⑴c Kubernetes 開源項(xiàng)目以及為之做貢獻(xiàn)的開發(fā)者、技術(shù)作家和測試人員。例如,它適用于以下各類人員:想要為 Kubernetes 進(jìn)行文檔編輯、代碼修復(fù)和草擬新功能;開發(fā)和使用各種使用 Kubernetes API 的應(yīng)用程序,如概要分析、監(jiān)視和集成工具;開發(fā)專門利用 Kubernetes 功能集的服務(wù)。
文章一開頭先介紹了基礎(chǔ)知識(shí)。接下來將幫助您設(shè)置開發(fā)環(huán)境。隨后,您將了解如何在 Kubernetes 項(xiàng)目中使用 GitHub 和 Git。最后幾部分則在開發(fā)、構(gòu)建和測試方面提出了一些建議,您因而可以為 Kubernetes 項(xiàng)目貢獻(xiàn)有用的代碼。
一些基礎(chǔ)問題
如果您是 Kubernetes 新手,在我們開始之前,您可能會(huì)遇到一些問題。
什么是 Kubernetes?
Kubernetes 是一組用 go 編寫的應(yīng)用程序。這些應(yīng)用程序一起形成了管理容器的交互式平臺(tái)。
Kubernetes 源代碼位于何處?
Kubernetes 在 GitHub 上提供。
Kubernetes 是 OSS 嗎?
Kubernetes 是 Google 捐贈(zèng)給云原生計(jì)算基金會(huì) (CNCF) 的開源軟件。
Kubernetes 在何處運(yùn)行?
Kubernetes 可在許多操作系統(tǒng)/分發(fā)版上運(yùn)行。但是,本指南將向您展示在 Ubuntu 上開發(fā)和測試 Kubernetes 的設(shè)置步驟。
前提條件
要遵循此設(shè)置指南,您需要滿足以下前提條件:
具有一個(gè) GitHub 帳戶 掌握 Git、bash 和 Linux 方面的基礎(chǔ)知識(shí)
預(yù)估時(shí)間
在按照本設(shè)置指南中這些步驟的順序執(zhí)行操作時(shí),各個(gè)步驟的預(yù)估時(shí)間完全由您來決定。一些開發(fā)者會(huì)使用跳過鏈接,他們或許只是將本文用作參考。而另一些人則可能需要半天、一整天甚至幾天乃至一周的時(shí)間,例如,您遇到了很多問題,或者對(duì) OSS 開發(fā)、測試或 Linux 很陌生。
為解決此類時(shí)間差異,我提供了一些可跳過的地方。當(dāng)某些操作即使是專家也需要花費(fèi)很長時(shí)間時(shí),我會(huì)告訴您。我還會(huì)提供一些捷徑,讓您能夠從小處著手構(gòu)建和測試,從而加快速度。具體操作需要多長時(shí)間取決于您的硬件。例如,某些測試操作在速度較快的集群上可能只需要 10 分鐘,而在速度較慢的筆記本電腦上則有可能需要長達(dá) 20 個(gè)小時(shí)。
您的開發(fā)環(huán)境
首先創(chuàng)建基本的 Kubernetes 開發(fā)環(huán)境:
Linux 終端和/或 ssh。(參閱設(shè)置您的主機(jī)操作系統(tǒng)、設(shè)置 Ubuntu 和使用并配置 ssh。) Go (golang.org)(參閱安裝 Go。) Docker(參閱安裝 Docker 和 containerd。) 構(gòu)建工具(參閱安裝構(gòu)建工具。) JSON 處理器 jq(參閱安裝 jq。) python-pip 和 pyyaml(參閱安裝 python-pip 和 pyyaml。) etcd
如果您已按照自己喜歡的方式完成了所有設(shè)置,可隨時(shí)跳至 GitHub 和 Kubernetes 項(xiàng)目。
設(shè)置您的主機(jī)操作系統(tǒng)
您需要做的第一件事就是安裝 Ubuntu。Ubuntu 16.04 或 18.04 LTS 服務(wù)器或桌面版就足夠用了。您也可以使用較新的非 LTS 發(fā)行版,這取決于您。我現(xiàn)在通過最新的 Virtual Box 在 iMac 上的虛擬機(jī) (VM) 中運(yùn)行 16.04 LTS 桌面版,通過 Virtual Box 在 Mac 筆記本電腦上運(yùn)行 18.04 LTS 桌面版,在使用最常用零部件組裝的裸機(jī)服務(wù)器上則運(yùn)行 18.04 LTS 服務(wù)器版。
您當(dāng)然可以使用虛擬機(jī)進(jìn)行 Kubernetes 開發(fā),我就是這樣做的,所以,如果您沒有資源來構(gòu)建自己的服務(wù)器,請(qǐng)不要灰心。
要在 Virtual Box 上設(shè)置 Ubuntu,應(yīng)完成以下步驟:
下載并安裝 Virtual Box:https://www.virtualbox.org/wiki/Downloads 下載一個(gè) Ubuntu ISO 文件(服務(wù)器/桌面版):http://www.ubuntu.com/ 使用剛下載的 Ubuntu ISO 創(chuàng)建一個(gè)新的 vbox。
考慮以下有關(guān) Virtual Box 設(shè)置的建議:
基本內(nèi)存 8g
140g vdi 硬盤驅(qū)動(dòng)器
共享剪貼板 — 僅雙向(如果安裝桌面版)
顯存 128mb(如果安裝桌面版)
網(wǎng)絡(luò):NAT
必須安裝訪客附加組件(如果是桌面版,單擊 VirtualBox VM > Devices > Insert Guest Additions CD Image…)
端口轉(zhuǎn)發(fā)規(guī)則(參閱高級(jí) Network 部分中的按鈕):
設(shè)置 Ubuntu
如果使用 Ubuntu 桌面版,則創(chuàng)建一個(gè)終端:
然后運(yùn)行軟件更新程序:
以下截屏展示了如何從終端運(yùn)行 apt-get 更新:
使用并配置 ssh
如果安裝了 Ubuntu 桌面版并且要運(yùn)行 ssh,可完成以下步驟以開始使用 ssh:
使用您的 PC 或 Mac 客戶端通過 ssh 連接到您的 Ubuntu 服務(wù)器或桌面版。如果安裝了 Ubuntu 桌面版并希望運(yùn)行 ssh,則運(yùn)行以下命令:
$?sudo?apt-get?install?openssh-server
$?sudo?service?ssh?start?or?sudo?/etc/init.d/ssh?start
$?ssh?-v?localhost
然后從客戶端機(jī)器(使用密碼)登錄到 ssh 服務(wù)器:
對(duì)于可選的無密碼 ssh,完成以下步驟:
運(yùn)行端到端 Kubernetes 測試以往通常需要配置無密碼的 ssh(使用密鑰而不是密碼)。如果您不想設(shè)置無密碼的 ssh,可直接跳至安裝 Go。
首先使用以下命令生成 Ubuntu 公鑰和私鑰:
$?ssh-keygen?-t?rsa
然后使用默認(rèn)位置并輸入密碼,或者只按 ENTER 鍵:
[email protected]
在 Mac 上,從 ~/.ssh 目錄運(yùn)行以下命令以生成密鑰:
$?ssh-keygen?-b?1024?-t?rsa?-f?id_rsa?-P?""
將 Mac 公鑰(例如,cat ~/.ssh/d_rsa.pub)復(fù)制粘貼到您的 ubuntu guest /home/user/.ssh/authorized_keys 文件中。
接下來,為無密碼 ssh 配置 Ubuntu 訪客:
$?sudo?nano?/etc/ssh/sshd\_config
對(duì) UN 注釋/配置進(jìn)行以下編輯:
PubkeyAuthentication?yes
AuthorizedKeyFile?%h/.ssh/authorized\_keys
PasswordAuthentication?no
PermitRootLogin?without-password
重新啟動(dòng):
$?sudo?service?ssh?restart?or?sudo?/etc/init.d/ssh?restart
然后,進(jìn)行測試:
$?ssh?mike@ubuntu?(ubuntu?=?hostname)?or?127.0.0.1?or?10.0.2.15?...
確保正常工作,然后退出。
由于您將通過無密碼形式以 root 用戶身份登錄,因此可以采取一種便捷方法,將用戶公鑰和私鑰以及 authorized_keys 復(fù)制到 /root/.ssh,例如:
$?sudo?cp?~/.ssh/authorized_keys?/root/.ssh/authorized_keys?(you?may?have?to?mkdir?/root/.ssh)
$?sudo?cp?~/.ssh/id_rsa?/root/.ssh/id_rsa
$?sudo?cp?~/.ssh/id_rsa.pub?/root/.ssh/id_rsa.pub
您現(xiàn)在應(yīng)能從 Mac 終端上的用戶帳戶,以 root 用戶或普通用戶身份不使用密碼通過 ssh 連接到訪客 Ubuntu:
終端 1:
[email protected]
終端 2:
[email protected]
您還應(yīng)該能利用 Ubuntu 主機(jī)上的用戶帳戶或 root 用戶帳戶,通過 ssh 連接到 Ubuntu 主機(jī)上的用戶帳戶和 root 用戶帳戶:
[email protected]
[email protected]
安裝 Go
在安裝時(shí),確保安裝 Kubernetes 支持的最新版本的 Go(或盡可能接近)。
從 https://golang.org/dl/ 中選擇所需的版本,然后使用 curl 將其下載到本地主機(jī):
$?curl?-O?https://storage.googleapis.com/golang/go1.13.9.linux-amd64.tar.gz
完成以下安裝步驟:
$?tar?-xvf?go1.13.9.linux-amd64.tar.gz
$?sudo?mv?go?/usr/local
$?rm?go1.13.9.linux-amd64.tar.gz
為適用的用戶配置環(huán)境變量,例如,當(dāng)前登錄的用戶 (~):
$?sudo?nano?~/.profile
和
$?sudo?nano?/root/.profile
現(xiàn)在,通過添加以下行將導(dǎo)出路徑語句添加到這些文件:
$?export?PATH=$PATH:/usr/local/go/bin:/home/mike/go/bin
注:/usr/local/go/bin 用于運(yùn)行 go 隨附的 go 二進(jìn)制文件,/home/username/go/bin 用于運(yùn)行您使用 go 構(gòu)建的任何 go 應(yīng)用程序。
測試配置:
$?go?version
go?version?go1.13.9?linux/amd64
要以 sudo 方式運(yùn)行用戶個(gè)人資料編輯,可運(yùn)行以下命令:
$?sudo?su?--
#?source?/home/mike/.profile
盡管風(fēng)險(xiǎn)更大,但您可以 root 用戶身份登錄并通過 visudo 更改 sudo secure_path 來添加 go 的路徑:
#?visudo
編輯默認(rèn) sudo secure_path:
Defaults
secure\_path=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin:/home/mike/go/bin\"
測試您的 sudo 配置:
$?sudo?go?version
go?version?go1.13.9?linux/amd64
安裝 Docker 和 containerd
有關(guān)更多信息,可參閱在 Ubuntu 上安裝 Docker Engine(https://docs.docker.com/install/linux/docker-ce/ubuntu/)。
要安裝 Docker,應(yīng)先更新軟件包:
$?sudo?apt-get?update
然后移除任何先前版本:
$?sudo?apt-get?remove?docker?docker-engine?docker.io?containerd?runc
安裝 https 傳輸支持:
$?sudo?apt-get?install?\
apt-transport-https?\
ca-certificates?\
curl?\
gnupg-agent?\
software-properties-common
添加 Docker 的 GPG 密鑰:
$?curl?-fsSL?https://download.docker.com/linux/ubuntu/gpg?|?sudo?apt-key?add?-
將 Docker 的穩(wěn)定發(fā)行版添加為 apt 存儲(chǔ)庫:
$?sudo?add-apt-repository?"deb?[arch=amd64]?https://download.docker.com/linux/ubuntu?$(lsb_release?-cs)?stable"
安裝最新穩(wěn)定版本的 Docker 和 containerd:
$?sudo?apt-get?update
$?sudo?apt-get?install?docker-ce?docker-ce-cli?containerd.io
要選擇特定版本的 Docker,可運(yùn)行以下命令:
$?sudo?apt-get?install?docker-ce=?docker-ce-cli=?containerd.io
測試您的 Docker 安裝:
$?sudo?docker?run?hello-world
將您自己添加到以 sudo 方式運(yùn)行的 Docker 組中,因此您無需輸入 sudo 即可運(yùn)行 Docker:
$?sudo?usermod?-aG?docker?mike
重新引導(dǎo)您的 Ubuntu 主機(jī):
$?sudo?shutdown?-r
重新引導(dǎo)完主機(jī)后,使用 ssh 重新登錄到您的主機(jī),然后再次測試 docker,這次不使用 sudo:
$?docker?run?hello-world
安裝構(gòu)建工具
運(yùn)行以下命令:
$?sudo?apt-get?install?build-essential
安裝 jq
運(yùn)行以下命令以安裝 jq(JSON 處理器):
$?sudo?apt-get?install?jq
安裝 python-pip 和 pyyaml
運(yùn)行以下命令以安裝 python-pip 和 pyyaml:
$?sudo?apt-get?install?python-pip
$?sudo?pip?install?pyyaml
GitHub 和 Kubernetes 項(xiàng)目
首先,讓我們看一下如何建立分支,然后克隆您的分支。接著,介紹一些關(guān)于個(gè)人資料和客戶端配置的注意事項(xiàng)。最后,您將了解 Kubernetes 項(xiàng)目的 Git 工作流。
建立分支
在 GitHub 上為以下項(xiàng)創(chuàng)建開發(fā)分支:
https://github.com/kubernetes/kubernetes 上的 Kubernetes 代碼 https://github.com/kubernetes/website 上的 Kubernetes 網(wǎng)站和文檔 https://github.com/kubernetes/test-infra 上的 Kubernetes test-infra
克隆您的分支
通常,在克隆 github.com 源代碼存儲(chǔ)庫時(shí),您可以使用 $GOPATH/src/github.com 路徑或 ~/go/src/github.com/projectname 路徑(表示 GitHub 中源代碼的路徑)。這樣可以方便使用 go get 類型命令拉取 GitHub 托管的數(shù)據(jù)包。
但是,出于遺留的原因,Kubernetes 包被命名為 k8s.io/kubernetes,而不是您可能想到的 github.com/kubernetes/kubernetes。因此,要讓所有開發(fā)工具正常工作并能在磁盤上找到您的數(shù)據(jù)包代碼,就需要將克隆版本放在 k8s.io 目錄中。
使用以下步驟從您的 name/kubernetes 分支創(chuàng)建 k8s.io/kubernetes 源代碼樹:
mike@mike-VirtualBox:~/go/src$?mkdir?k8s.io
mike@mike-VirtualBox:~/go/src$?cd?k8s.io
$?git?clone?https://github.com/mikebrow/kubernetes.git
$?git?clone?https://github.com/mikebrow/website.git
$?git?clone?https://github.com/mikebrow/test-infra.git
結(jié)果:源文件從您的分支復(fù)制(克?。┑?go/src/k8s.io/kubernetes 和 k8s.io/website 目錄。Git 在您的本地硬盤上為您的 git hub 分支創(chuàng)建一個(gè)主分支。
檢查分支的狀態(tài):
$?cd?kubernetes
$?git?status
On?branch?master
Your?branch?is?up-to-date?with?'origin/master`.
nothing?to?commit,?working?directory?clean
GitHub 個(gè)人資料建議
考慮以下 GitHub 個(gè)人資料建議:
向您的公開個(gè)人資料添加一個(gè)電子郵箱 啟用雙因素身份驗(yàn)證
Git 客戶端配置建議
考慮以下客戶端配置建議:
將 user.* 條目設(shè)置為全局和/或本地:
$?git?config?--local?user.name?"full?name?here"
$?git?config?--local?user.email?"email?address?here"
或
$?git?config?--global?user.name?"full?name?here"
$?git?config?--global?user.email?"email?address?here"
讓推送變得更容易:
$?git?config?--global?push.default?simple
運(yùn)行以下命令,這樣就不需要每次都記住 GitHub 憑證:
$?git?config?credential.helper?store
告知 git 跟蹤針對(duì) kubernetes/kubernetes 在您的硬盤上對(duì)克隆分支的更改:
$?git?remote?add?upstream?https://github.com/kubernetes/kubernetes.git
運(yùn)行 git config -l 的結(jié)果應(yīng)類似于:
user.name=Mike?Brown
[email protected]
push.default=simple
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/mikebrow/kubernetes.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.upstream.url=https://github.com/kubernetes/kubernetes.git
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
credential.helper=store
Kubernetes 開源項(xiàng)目的 Git 工作流
下圖顯示了一個(gè)查找和修復(fù) GitHub 上開源產(chǎn)品問題的典型 Git 工作流。盡管此工作流是為 Docker 設(shè)計(jì)的,但它也適用于 Kubernetes。
在下面的 Kubernetes 問題中找到要處理的內(nèi)容:https://github.com/kubernetes/kubernetes/issues
在您找到的問題上添加一條注釋。
如果您有任何疑問,盡管大膽提出。
如果希望解決問題,請(qǐng)說出您的問題。例如,添加一個(gè)句子,說明您正在調(diào)用 #dibs,以表明您正在解決此問題。
如果您不確定自己能否解決該問題,至少應(yīng)該使用 #investigating 表明您正在執(zhí)行調(diào)查分析。雖然沒有為您分配,但這會(huì)讓其他人知道您以后可能會(huì)調(diào)用 dibs。
Kubernetes 開發(fā)(安裝 etcd)
在構(gòu)建 Kubernetes 之前,您需要安裝 etcd。Kubernetes 隨附以下腳本來安裝 etcd:
$?hack/install-etcd.sh
將顯示的 etcd 路徑添加到您的用戶個(gè)人資料。例如,使用以下命令將 /home/mike/go/src/k8s.io/kubernetes/third_party/etcd 添加到您的路徑:
$?sudo?nano?~/.profile
$?sudo?nano?/root/.profile
如果需要,可將其添加到 sudo 的 secure\_path:
$?sudo?su?-
#?visudo
現(xiàn)在,安全路徑應(yīng)類似如下:
Defaults
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin:/home/mike/go/bin:/home/mike/go/src/k8s.io/kubernetes/third_party/etcd"
重新引導(dǎo)您的主機(jī):
$?sudo?shutdown?-r
重新引導(dǎo)完主機(jī)后,使用 ssh 重新登錄到您的主機(jī),然后測試 etcd:
$?etcd?--version
$?sudo?etcd?--version
使用 make 構(gòu)建 Kubernetes
使用 help 目標(biāo)顯示 make 選項(xiàng):
$?make?help
一些免責(zé)聲明和警告:首次構(gòu)建、驗(yàn)證和測試時(shí),Kubernetes 需要很長時(shí)間,因?yàn)樗跇?gòu)建和下載大量的大型容器鏡像。某些下載可能會(huì)失敗,這會(huì)在您首次甚至是第二次嘗試運(yùn)行它們時(shí),導(dǎo)致意外的構(gòu)建和測試失敗。另外,由于測試的某些或許多部分可能會(huì)發(fā)生“主要”錯(cuò)誤,而您將在這些錯(cuò)誤基礎(chǔ)上構(gòu)建,并且某些錯(cuò)誤僅在長時(shí)間超時(shí)后才會(huì)發(fā)生,因此需要耐心。即使所有內(nèi)容都已下載且沒有任何錯(cuò)誤,構(gòu)建、驗(yàn)證和測試步驟預(yù)計(jì)也要花費(fèi)大量時(shí)間。
如果要構(gòu)建一切以在本地運(yùn)行 Kubernetes,可使用 all 目標(biāo):
$?sudo?make?all
如果只想構(gòu)建軟件包/可執(zhí)行文件之一,可使用 make WHAT=cmd/package\_name。例如,要構(gòu)建 kublet 服務(wù)器,可運(yùn)行以下命令:
$?sudo?make?WHAT=cmd/kublet
根據(jù)您所做的更改,可能不會(huì)始終構(gòu)建客戶端/服務(wù)器軟件包。如果要強(qiáng)制同步二者(清除/移除構(gòu)建二進(jìn)制文件),可使用 clean:
$?sudo?make?clean
要生成發(fā)行版,可運(yùn)行以下命令:
$?sudo?make?release
要在不運(yùn)行測試的情況下生成發(fā)行版,可運(yùn)行以下命令:
$?sudo?make?release-skip-tests
測試 Kubernetes(單元和集成測試)
在將更改提交到本地開發(fā)分支之前,建議您先運(yùn)行驗(yàn)證、單元和集成測試。根據(jù)更改的類型,您可能還需要運(yùn)行端到端測試存儲(chǔ)桶。
在將 PR 推送到 kubernetes/kubernetes 之前,構(gòu)建要完成的驗(yàn)證測試(例如,預(yù)提交驗(yàn)證):
$?sudo?make?verify
針對(duì)單元測試運(yùn)行以下命令:
$?sudo?make?test
僅針對(duì) pkg/api/pod 測試運(yùn)行以下命令:
$?sudo?make?test?WHAT=./pkg/api/pod
僅在詳細(xì)模式下運(yùn)行 kubelet 測試:
$?sudo?make?test?WHAT=./pkg/kubelet?GOFLAGS=-v
在詳細(xì)模式下運(yùn)行 pod 和 kubelet 測試:
$?sudo?make?test?WHAT="./pkg/api/pod?./pkg/kubelet"?GOFLAGS=-v
針對(duì)集成測試運(yùn)行以下命令:
$?sudo?make?test-integration
針對(duì) kubelet 集成測試運(yùn)行以下命令:
$?sudo?make?test-integration?WHAT=./test/integration/kubelet
在詳細(xì)模式下運(yùn)行 pod 集成測試:
$?sudo?make?test-integration?WHAT=./test/integration/pods?GOFLAGS="-v"
Kubernetes 端到端測試
以下部分展示如何運(yùn)行 Kubernetes 端到端或 e2e 測試。
1. 安裝 kubetest
運(yùn)行以下命令來安裝 kubetest:
$?cd?../test-infra
$?sudo?GO111MODULE=on?go?install?./kubetest
$?cd?../kubernetes
2. 啟動(dòng)本地集群
運(yùn)行 Kubernetes e2e 測試需要使用集群。e2e 測試可在任何兼容 Kubernetes 的集群上運(yùn)行。本指南展示了如何創(chuàng)建一個(gè)在 Linux 環(huán)境中運(yùn)行的單節(jié)點(diǎn)集群。如果遵循上述說明,那么該集群將在裸機(jī)上的 VM 或 Ubuntu 主機(jī)中以 Ubuntu 訪客帳戶運(yùn)行。您使用了兩個(gè)終端。
有關(guān)端到端測試的注意事項(xiàng):對(duì)于默認(rèn)的 e2e 測試選項(xiàng),當(dāng)客戶端和服務(wù)器的版本不同步時(shí),將不會(huì)運(yùn)行 e2e 測試?,F(xiàn)在可以通過設(shè)置 check_version_skew=false,對(duì)不一致的版本運(yùn)行 e2e。
在終端 1 中,構(gòu)建 Kubernetes 并啟動(dòng)您的本地集群:
$?sudo?make?clean
$?sudo?make
$?sudo?PATH=$PATH?hack/local-up-cluster.sh
在終端 2 中,將 kubectl 配置為與本地集群交互:
$?export?KUBECONFIG=/var/run/kubernetes/admin.kubeconfig
檢查您的單節(jié)點(diǎn)本地集群的狀態(tài):
$?cluster/kubectl.sh?get?nodes
NAME????????STATUS????AGE
127.0.0.1???Ready?????3h
3. 運(yùn)行 e2e 測試
在終端 2 中,運(yùn)行 e2e 密鑰測試存儲(chǔ)桶:
$?sudo?kubetest?--provider=local?--test?--test_args="--minStartupPods=1?--ginkgo.focus=Secrets"
注:minStartupPods 設(shè)置為 1,以反映本地集群中只有一個(gè)節(jié)點(diǎn)。
現(xiàn)在運(yùn)行所有 e2e 測試(這需要很長時(shí)間才能完成):
$?sudo?kubetest?--provider=local?--test?--test_args="--minStartupPods=1"
完成 Kubernetes 集群的使用后,可在終端 1 中使用 ctrl-C 快速將其關(guān)閉。
有關(guān)端到端測試的更多信息,可參閱 e2e-tests(https://github.com/kubernetes/community/blob/master/contributors/devel/sig-testing/e2e-tests.md)。
Kubernetes 端到端節(jié)點(diǎn)測試
以下部分展示如何運(yùn)行 Kubernetes 端到端節(jié)點(diǎn)測試,也稱為 e2e-node 測試。
1. 安裝 ginkgo
運(yùn)行以下命令:
$?sudo?go?get?-u?github.com/onsi/ginkgo/ginkgo
$?sudo?go?get?-u?github.com/onsi/gomega/...
2. 啟動(dòng)集群
在終端 1 中,啟動(dòng)您的本地單節(jié)點(diǎn)集群:
$?sudo?PATH=$PATH?hack/local-up-cluster.sh
在終端 2 中,將 kubectl 配置為與本地集群交互:
$?export?KUBECONFIG=/var/run/kubernetes/admin.kubeconfig
3. 運(yùn)行 e2e-node 測試
在本地運(yùn)行 Sysctls e2e-node 測試:
$?sudo?make?test-e2e-node?PARALLELISM=1?FOCUS=Sysctls
運(yùn)行所有 e2e-node tests(這需要很長時(shí)間才能完成):
$?sudo?make?test-e2e-node?PARALLELISM=1
有關(guān)端到端節(jié)點(diǎn)測試的更多信息在 e2e-node-tests(https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/e2e-node-tests.md) 文檔中提供。
構(gòu)建生成的文件
在 kubernetes/kubernetes 樹中編輯用于生成其他源文件的源文件之后,必須在執(zhí)行 git commit 之前更新生成的文件。運(yùn)行以下命令:
$?sudo?make?update
Running?update-generated-protobuf
Running?update-codegen
Running?update-generated-runtime
Running?update-generated-device-plugin
...
Kubernetes 文檔網(wǎng)站
如果您想為 Kubernetes 文檔貢獻(xiàn)一份力量,可遵循這些說明(https://kubernetes.io/docs/contribute/start/)進(jìn)行操作。
其他事宜
您不應(yīng)該就此止步,還應(yīng)該執(zhí)行其他一些任務(wù):
在提交更改之前,在每個(gè)更改的文件上運(yùn)行 gofmt -s -w file.go。在提交更改之前,在每個(gè)更改的文件上運(yùn)行 golint。(Kubernetes 團(tuán)隊(duì)目前沒有使用 lint。但它不會(huì)造成任何影響。)在創(chuàng)建或修改功能時(shí),記得更新文檔。 記住添加測試案例來包含您的更改。 在提交修復(fù)方法或關(guān)閉問題時(shí),應(yīng)在以下提交消息中引用它們: Closes #XXXX或Fixes #XXXX。在每次提交后,運(yùn)行測試套件并保證通過測試。 在編碼的過程中頻繁地同步和執(zhí)行 rebase,以跟上主節(jié)點(diǎn)的進(jìn)度。
結(jié)束語
我希望本指南可幫助您開始 Kubernetes 開發(fā)之旅。查看并遵循 Kubernetes 社區(qū)準(zhǔn)則,成為成功的貢獻(xiàn)者、成員、審查者、批準(zhǔn)者(又名“提交者”、“維護(hù)者”)和/或子項(xiàng)目負(fù)責(zé)人。
“原文鏈接:https://developer.ibm.com/articles/setup-guide-for-kubernetes-developers/
”
CKA 認(rèn)證培訓(xùn)
?點(diǎn)擊屏末?|?閱讀原文?|?即刻學(xué)習(xí)











