1. 程式人生 > >Kubernetes(k8s)中文文件 Google Computer Engine入門_Kubernetes中文社群

Kubernetes(k8s)中文文件 Google Computer Engine入門_Kubernetes中文社群

譯者:李加慶 校對:無

下面的例子用4個節點虛擬機器和1個主虛擬機器(也就是說叢集中使用了5個虛擬機器)建立了一個Kubernetes叢集。您可以在您的工作站(或是任何您覺得合適的地方)安裝和控制這個叢集。

開始之前

如果您想要一個簡化的入門體驗和圖形使用者介面來管理叢集,請考慮嘗試使用谷歌容器引擎(GKE)安裝和管理託管叢集。 如果您想使用自定義的二進位制檔案或者原生的開源Kubernetes,請看下面的說明。

前提條件

1.您需要一個可以結算費用的Google雲平臺賬戶,更多細節詳見Google開發者控制檯。

2.安裝gcloud是必要的。 gcloud可以作為谷歌雲SDK的一部分來安裝。

3.然後,確保您已經安裝了gcloud preview命令列元件。在命令列中執行gcloud preview。如果它要求安裝任何元件,就按照提示安裝。如果它只是顯示幫助文字,那就大功告成了。這是必需的因為叢集安裝指令碼使用gcloud preview名稱空間中的GCE例項組,所以這一步是必要的。您還需要在開發控制檯中啟用計算引擎例項組管理器API。

4.確保gcloud被設定使用您想使用的谷歌雲平臺專案。您可以使用gcloud配置清單專案檢查當前的專案,並通過 gcloud config set project <project-id> 來更改它。

5.確保您擁有基於gcloud身份驗證登入的GCloud憑據。

6.確保您可以通過命令列啟動一個GCE虛擬機器。至少確保您可以實踐GCE快速入門的建立例項部分。

7.確保您在沒有互動式提示符的情況下可以ssh連線到VM。參閱GCE快速入門登入例項部分。

啟動叢集

您可以使用下面任意一條命令(以防萬一。我們列出了兩個,以防您的機器上只安裝了某一個)來安裝客戶端並啟動叢集:

curl -sS https://get.k8s.io | bash

或者

wget -q -O - https://get.k8s.io | bash

此命令完成後,會有一個master虛擬機器和四個worker虛擬機器作為Kubernetes叢集來執行。

預設情況下,一些容器已經執行在叢集上。一些容器如kibana和elasticsearch提供日誌記錄,而heapster提供監控服務。

上面提到的命令執行指令碼建立一個名為或者字首為“kubernetes”的叢集。它定義了一個特定的叢集配置,所以只能執行一次。

或者,您可以從這個頁面下載並安裝最新的Kubernetes 發行版,然後執行/cluster/kube-up.sh指令碼來啟動叢集:

cd kubernetescluster/kube-up.sh

如果您想在專案中執行不止一個叢集,想使用不同的名字或者不同數量的工作節點,在啟動叢集之前參見 /cluster/gce/config-default.sh檔案來進行更細粒度的配置。

如果您遇到問題,請參見故障排除章節,給Google容器組發郵件或者在IRC freenode的

#google-containers頻道提問。

接下來的幾個步驟將向您展示:

1.如何在您的工作站上安裝命令列客戶端來管理叢集

2.如何使用叢集的一些示例

3.如何刪除群集

4.如何啟動使用非預設選項的叢集(如更大的叢集)

在您的工作站中安裝Kubernetes命令列工具

叢集啟動指令碼會在工作站中留下一個正在執行的叢集和一個kubernetes目錄。下一步是要確保kubectl工具是在您的path中。

該kubectl工具控制Kubernetes叢集管理器。它可以讓您檢查叢集資源,建立、刪除和更新元件以及更多功能。您會用它來檢視新叢集並生成示例應用程式。 新增適當的二進位制資料夾到您的path中以便可以訪問kubectl:

# OS X
export PATH=<path/to/kubernetes-directory>/platforms/darwin/amd64:$PATH#
Linux
export PATH=<path/to/kubernetes-directory>/platforms/linux/amd64:$PATH

注:gcloud還附帶kubectl,預設情況下被新增到您的path中。然而,gcloud所捆綁的kubectl版本可能會比通過get.k8s.io安裝指令碼下載的版本舊。我們建議您使用下載的二進位制檔案,以避免與客戶機/伺服器版本偏差所帶來的潛在問題。

為bash配備Kubernetes命令列工具自動補全

您會發現讓kubectl自動補全非常有用:

$ source ./contrib/completions/bash/kubectl

注:這種補全會在您的bash會話一直有效,如果您想要它永久有效,您需要在bash profile中新增這一行。 另外的一個選擇,在大多數linux發行版中,您也可以像下面這樣複製完整的檔案到您的 bash_completions.d :

$ cp ./contrib/completions/bash/kubectl /etc/bash_completion.d/

但是,你在更新kubectl的時候也要更新它。

啟動您的叢集

監控您的叢集

一旦kubectl在您的path中,您就可以用它來檢視您的叢集。也就是執行:

$ kubectl get --all-namespaces services

應該會顯示一組服務,看起來像這樣:

20161107205600

同樣,您可以檢視在叢集啟動時建立的pod。您可以這樣做:

$ kubectl get --all-namespaces pods

您會看到如下所示的pod列表(名字細節會有所不同):

NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system fluentd-cloud-logging-kubernetes-minion-63uo 1/1 Running 0 14m
kube-system fluentd-cloud-logging-kubernetes-minion-c1n9 1/1 Running 0 14m
kube-system fluentd-cloud-logging-kubernetes-minion-c4og 1/1 Running 0 14m
kube-system fluentd-cloud-logging-kubernetes-minion-ngua 1/1 Running 0 14m
kube-system kube-dns-v5-7ztia 3/3 Running 0 15m
kube-system kube-ui-v1-curt1 1/1 Running 0 15m
kube-system monitoring-heapster-v5-ex4u3 1/1 Running 1 15m
kube-system monitoring-influx-grafana-v1-piled 2/2 Running 0 15m

一些pod啟動時可能會花費數秒(在此期間,它們會顯示為掛起狀態),但是在一小段時間後再次檢查,它們就都是執行狀態了。

執行一些例子

然後,通過一個簡單的nginx示例來拿新的叢集練練手。 想要了解更多完整的應用程式,請檢視示例目錄。該Guestbook示例就是一個很好的“入門”演練。

拆除叢集

使用kube-down.sh指令碼來移除/刪除/拆除叢集:

cd kubernetes
cluster/kube-down.sh

同樣地,同一目錄下的kube-up.sh會做好備份。您無需重新執行curl或wget命令:安裝Kubernetes叢集所需要的一切都已在您的工作站中就緒。

定製叢集

上面的指令碼依賴於Google儲存來暫存Kubernetes發行版。然後,它會啟動(預設)單個master虛擬機器以及4個worker虛擬機器。您可以通過編輯kubernetes/cluster/gce/configdefault.sh來調整一些引數,您可以在這裡檢視叢集建立成功的記錄。

故障排除

專案設定

您需要啟用谷歌雲端儲存API和谷歌雲端儲存JSON API,新專案是預設啟用的。如果沒有啟用,可以在谷歌雲控制檯完成。更多詳情請參閱谷歌雲端儲存JSON API

正如前提條件部分所列那樣,還要確保地是,您已經啟用計算引擎例項組管理器API,並且能夠根據GCE快速入門中的指導那樣,從命令列中啟動一個GCE虛擬機器。

叢集初始化掛起

如果Kubernetes啟動指令碼掛起並等待API可用,您可以通過ssh方式連線到主虛擬機器和節點虛

擬機來檢視日誌如:

/var/log/startupscript.log

一旦您解決了這個問題,在再次嘗試執行kube-up.sh之前 ,您應該在部分叢集建立後執行kube-down.sh來做一下清理。

SSH

如果您無法通過SSH連線到您的例項,請確保GCE防火牆沒有遮蔽虛擬機器的22埠。預設情況下,是可以正常連線到例項的,但是,如果您編輯了防火牆規則或者建立了一個新的非預設的網路,您需要將其暴露:

gcloud compute firewall-rules create default-ssh --network=<network-name> --description "SSH allowed

此外,您的GCE SSH金鑰必須要麼沒有密碼,要麼需要使用ssh-agent。

網路通訊

該例項必須能夠使用自己的私有IP連線到對方。該指令碼使用“預設”網路,該網路有一個被稱為“default-allow-internal”的防火牆規則,它允許私有IP地址上的任何埠跑流量。如果這個規則在預設網路中缺失或者您修改了在cluster/config-default.sh中正在使用的網路,那麼使用下面的欄位值建立一個新的規則:

  • Source Ranges:10.0.0.0/8
  • Allowed Protocols and Port:tcp:1-65535;udp:1-65535;icmp
K8S中文社群微信公眾號