衆所周知,亞馬遜有EC2容器服務,它是亞馬遜用于運作Docker容器的解決方案。不過我覺得EC2容器服務不怎麼好用,是以現在我要在AWS上測試Rancher和Kubernetes。
Kubernetes是一個用以自動化部署、彈性伸縮以及管理容器化應用程式的開源系統。Rancher是一個可用于企業内部的完整的容器管理和運作平台,它提供企業級的通路控制和容器編排。
Rancher環境部署
第一步,我會按預設的向導建立一個新的虛拟私有雲,這個虛拟私有雲是為Rancher準備的。接下來的事情就是建立一個或多個新主機,Rancher文檔說要手動安裝Docker,我在這裡選擇了RancherOS AMI。AMI是專門為這個目的而生的,而且它非常的小(甚至于curl都沒有被安裝)。
<a href="https://s1.51cto.com/wyfs02/M00/8C/ED/wKioL1h-0uvzrdOGAADvbJec2CQ869.jpg" target="_blank"></a>
安全組限制了隻有我的IP才可以通路TCP端口 k8080。這一點很重要,因為預設的設定是不會啟動授權的。在不同主機間允許彼此的通路也是件非常棒的事情,這可以通過儲存安全組來完成(然後順利拿到sg- identifier),并向那個安全組中添加所有通路權限。
<a href="https://s5.51cto.com/wyfs02/M00/8C/ED/wKioL1h-02DAlvW7AAJA2lK12GQ919.jpg" target="_blank"></a>
當新的instance準備就緒,隻需使用SSH連接配接并且用sudo docker run -d --restart=always -p 8080:8080 rancher/server啟動Rancher伺服器Docker image就好了。Rancher的應用程式将自己在Docker image内運作。
<a href="https://s5.51cto.com/wyfs02/M00/8C/F0/wKiom1h-04_jPPPXAAAaD0ukCs4513.png" target="_blank"></a>
你可以用the docker logs -f {containerid}指令跟蹤日志:
<a href="https://s4.51cto.com/wyfs02/M01/8C/F0/wKiom1h-08Lj_xgOAAAkCf979Pw963.png" target="_blank"></a>
一切完美!Rancher server開始啟動了。你可以浏覽到這個執行個體的IP,預設情況下,Rancher server将在端口8080上運作。所有的主機都可以使用公有的IP,可如果你是在虛拟私有雲上有主機的話,這就有點麻煩了,是以你可以選擇使用私有IP而非公有IP。這可以在管理和設定裡進行更改。
<a href="https://s1.51cto.com/wyfs02/M02/8C/F1/wKiom1h-09qgLn0ZAACqdQyPT1M803.jpg" target="_blank"></a>
當Rancher server啟動并運作了,我們需要添加一些Docker主機。你可以啟動一個新的主機(這很贊的,因為它會啟動另一個有着相同配置的執行個體),或者你可以添加和server中的主機一樣的主機(不過這不是最好的辦法)。
Kubernetes環境部署
接下來,在Rancher server中的添加一個新的主機,點選Infrastructure,然後再點選Add Host 。主機添加完了之後,您可以添加Kubernetes環境了。 Kubernetes随後将自動部署到新的主機上。
<a href="https://s5.51cto.com/wyfs02/M00/8C/F1/wKiom1h-1BSiX-NiAADa0X8eXIM211.jpg" target="_blank"></a>
這将需要幾分鐘的時間,你可以通過選擇環境監視其目前的狀态:
<a href="https://s4.51cto.com/wyfs02/M01/8C/F1/wKiom1h-1CbjzKZCAABq0_4egvI959.jpg" target="_blank"></a>
Kubernetes環境建立完成後,您可以導航到Catalog裡部署一個容器。例如,選擇K8S Example Ghost容器——它幾乎不需要花時間,就能瞬間啟動并運作起來:
<a href="https://s4.51cto.com/wyfs02/M01/8C/ED/wKioL1h-1ESQPHUSAACwHJ1vLfE530.jpg" target="_blank"></a>
在部署Kubernetes的過程中,堆棧會和下列執行個體一起被建立:
Rancher Ingress Controller 1 (rancher/ingress-controller):Rancher Ingress Controller将充分利用Rancher現有的負載平衡功能,并結合Kubernetes ingress的特性,內建成Rancher的負載均衡。
Rancher Server (rancher/server):Rancher 管理伺服器,它将運作web前端和API。
Rancher Agent (rancher/agent):每個節點都會獲得一個相對獨立的、用以管理節點的agent。
Rancher Kubernetes Agent 1 (rancher/kubernetes-agent):負責處理Rancher和Kubernetes之間通信的代理。
Rancher Agent Instance (rancher/agent-instance):Rancher的代理執行個體的image。
Kubernetes ETCD 1 (rancher/etc):etcd是用于對象和中繼資料的持久化、安全的分布式存儲的高可用性鍵值存儲元件。
Kubernetes Proxy 1 (rancher/k8s):在每個節點上運作的Kubernetes network proxy。
Kubernetes Scheduler 1 (rancher/k8s):Kubernetes controller manager是Kubernetes的一個核心元件。
Kubelet 1 (rancher/k8s):kubelet是在每個節點上運作的最重要的“節點代理”。
當你要添加一個額外的主機時,以下這些也會被同步添加:
Kubernetes Proxy2
Kubernetes Etcd 2
Kubelet 2
因為我不想自己維護我自己的registry,是以我建立了一個Amazon Container Registry,并使用了Rancher的registry。你可以直接複制Amazon Container Registry裡的位址,使用者名AWS(注意區分大小寫)和密碼(base64編碼字元串)。
你可以這樣獲得credentials:
<a href="https://s5.51cto.com/wyfs02/M02/8C/ED/wKioL1h-1LjQkH__AAAEZZXq8BI615.png" target="_blank"></a>
然後建立Docker image:
<a href="https://s4.51cto.com/wyfs02/M01/8C/ED/wKioL1h-1Mqxur38AAAEJQ_dAAI657.png" target="_blank"></a>
給image打上标簽:
<a href="https://s1.51cto.com/wyfs02/M00/8C/ED/wKioL1h-1NqQqp9NAAAFK6wFKPw249.png" target="_blank"></a>
push 這個image去registry:
如果你想更多地了解如何在Rancher上運作Kubernetes,可以通路這裡:
<a href="http://rancher.com/kubernetes/%EF%BC%8C%E6%88%96%E6%9D%A5%E8%BF%99%E9%87%8C%E9%98%85%E8%AF%BB%E5%85%8D%E8%B4%B9%E7%9A%84%E7%94%B5%E5%AD%90%E4%B9%A6%EF%BC%9Ahttp://info.rancher.com/deploying-scaling-kubernetes-ebook%E3%80%82" target="_blank">http://rancher.com/kubernetes/,或來這裡閱讀免費的電子書:http://info.rancher.com/deploying-scaling-kubernetes-ebook。</a>
本文轉自 RancherLabs 51CTO部落格,原http://blog.51cto.com/12462495/1892799文連結: