1. 程式人生 > >Kubernetes(k8s)中文文件 本地執行Kubrenetes v1.0_Kubernetes中文社群

Kubernetes(k8s)中文文件 本地執行Kubrenetes v1.0_Kubernetes中文社群

譯者:盧文泉

環境需求

Linux

沒有執行Linux?考慮下使用Vagrant在虛擬機器中執行Linux,或者像Google Compute Engine這樣的雲提供商上執行。

Docker

至少Docker1.3+。確保Docker守護程序一直執行,並確保能互動(比如 docker ps )。一些Kubernetes元件需要root許可權執行,這樣這些元件才能和Docker正常、良好地工作。

etcd

你需要配置etcd到環境變數,請確保安裝etcd並且正確配置到$PATH中。

go

go版本至少1.3+,請確保安裝好go並配置好¥PATH。

啟動叢集

新開啟一個單獨的終端,執行下面的指令(由於啟動/停止kubernetes守護程序需要root許可權,所以使用root許可權執行整個指令碼會使操作更加容易):

cd kubernetes
hack/local-up-cluster.sh

這個操作將會構建和啟動一個輕量的本地叢集,包含一個master和一個節點。輸入ctrl+C關閉叢集。

執行容器

成功執行集群后,我想你很定迫不及待地想啟動你的容器了。

現在你可以使用 cluster/kubectl.sh 指令碼中的命令來和本地叢集互動了:

cluster/kubectl.sh get pods
cluster/kubectl.sh get services
cluster/kubectl.sh get replicationcontrollers
cluster/kubectl.sh run my-nginx --image=nginx --replicas=2 --port=80
##在等待命令完成前,你可以開啟一個新終端檢視docker拉取映象
sudo docker images
##你會看到docker正在拉去nginx映象
sudo docker ps
## 你會看到你的容器正在執行
exit
## end wait
## 檢視kubernetes相關資訊
cluster/kubectl.sh get pods
cluster/kubectl.sh get services
cluster/kubectl.sh get replicationcontrollers

執行使用者定義的pod

要注意容器和pod之前的不同。如果你只向kubernetes請求前者(容器),kubernetes會建立一個新的封裝好的pod給你。但是(通過這個pod)你不能在本地主機檢視到nginx的開始頁面。為了驗證nginx正確在容器中執行,你需要在容器中執行 curl (通過docker exec執行)。

你可以通過使用者定義的 manifest 來控制pod的資訊。指定埠就可以在瀏覽器中訪問nginx了:

cluster/kubectl.sh create -f docs/user-guide/pod.yaml

祝你好運

解決問題

我不能通過IP訪問服務

一些使用 iptables 工具的防火牆軟體不能很好地與kubernetes配合。如果你在網路上遇到麻煩,首先嚐試關閉系統的防火牆或者其它使用 iptables 的系統。此外,通過 journalctl –since yesterday | grep avc 指令檢查SELinux(【譯者注】指安全增強型Linux系統)是否遮蔽了什麼。

叢集IPs預設範圍: 10.0… ,這有可能引起docker 容器IP和叢集IP衝突。如果你發現容器IP也在叢集的IP範圍內,編輯 hack/local-cluster-up.sh 指令碼修改叢集的IP範圍。

當副本控制器的副本數大於1時我無法建立副本!哪裡出了問題?

(也許是)你只執行一個node節點。指超過了一個給定pod支援的最大副本數。如果你對執行更大副本書感興趣,我們鼓勵你使用vagrant或者在雲上操作。

我修改Kubernetes程式碼後該如何執行它?

cd kubernetes
hack/build-go.sh
hack/local-up-cluster.sh

kubectl表明啟動容器但是 get pod 和 docker ps 命令沒有顯示

本地 local-up-cluster.sh 指令碼不會啟動DNS服務。類似的解決方案見這裡。或者你可以手動啟動。

K8S中文社群微信公眾號