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服務。類似的解決方案見這裡。或者你可以手動啟動。