如何用Rancher在AWS上運行Kubernetes

衆所周知,亞馬遜有EC2容器服務,它是亞馬遜用於運行Docker容器的解決方案。不過我覺得EC2容器服務不怎麼好用,所以現在我要在AWS上測試Rancher和Kubernetes。


Kubernetes是一個用以自動化部署、彈性伸縮以及管理容器化應用程序的開源系統。Rancher是一個可用於企業內部的完整的容器管理和運行平臺,它提供企業級的訪問控制和容器編排。


Rancher環境部署


第一步,我會按默認的嚮導創建一個新的虛擬私有云,這個虛擬私有云是爲Rancher準備的。接下來的事情就是創建一個或多個新主機,Rancher文檔說要手動安裝Docker,我在這裏選擇了RancherOS AMI。AMI是專門爲這個目的而生的,而且它非常的小(甚至於curl都沒有被安裝)。


wKioL1h-0uvzrdOGAADvbJec2CQ869.jpg


安全組限制了只有我的IP纔可以訪問TCP端口 k8080。這一點很重要,因爲默認的設定是不會啓動授權的。在不同主機間允許彼此的訪問也是件非常棒的事情,這可以通過保存安全組來完成(然後順利拿到sg- identifier),並向那個安全組中添加所有訪問權限。


wKioL1h-02DAlvW7AAJA2lK12GQ919.jpg


當新的instance準備就緒,只需使用SSH連接並且用sudo docker run -d --restart=always -p 8080:8080 rancher/server啓動Rancher服務器Docker image就好了。Rancher的應用程序將自己在Docker image內運行。


wKiom1h-04_jPPPXAAAaD0ukCs4513.png


你可以用the docker logs -f {containerid}命令跟蹤日誌:


wKiom1h-08Lj_xgOAAAkCf979Pw963.png


一切完美!Rancher server開始啓動了。你可以瀏覽到這個實例的IP,默認情況下,Rancher server將在端口8080上運行。所有的主機都可以使用公有的IP,可如果你是在虛擬私有云上有主機的話,這就有點麻煩了,所以你可以選擇使用私有IP而非公有IP。這可以在管理和設置裏進行更改。


wKiom1h-09qgLn0ZAACqdQyPT1M803.jpg


當Rancher server啓動並運行了,我們需要添加一些Docker主機。你可以啓動一個新的主機(這很讚的,因爲它會啓動另一個有着相同配置的實例),或者你可以添加和server中的主機一樣的主機(不過這不是最好的辦法)。


Kubernetes環境部署


接下來,在Rancher server中的添加一個新的主機,點擊Infrastructure,然後再點擊Add Host 。主機添加完了之後,您可以添加Kubernetes環境了。 Kubernetes隨後將自動部署到新的主機上。


wKiom1h-1BSiX-NiAADa0X8eXIM211.jpg


這將需要幾分鐘的時間,你可以通過選擇環境監視其當前的狀態:


wKiom1h-1CbjzKZCAABq0_4egvI959.jpg


Kubernetes環境創建完成後,您可以導航到Catalog裏部署一個容器。例如,選擇K8S Example Ghost容器——它幾乎不需要花時間,就能瞬間啓動並運行起來:


wKioL1h-1ESQPHUSAACwHJ1vLfE530.jpg


在部署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:


wKioL1h-1LjQkH__AAAEZZXq8BI615.png


然後創建Docker image:


wKioL1h-1Mqxur38AAAEJQ_dAAI657.png


給image打上標籤:


wKioL1h-1NqQqp9NAAAFK6wFKPw249.png


push 這個image去registry:


wKiom1h-1dHTt-ijAAAEy6Y340A372.png


如果你想更多地瞭解如何在Rancher上運行Kubernetes,可以訪問這裏:

http://rancher.com/kubernetes/,或來這裏閱讀免費的電子書:http://info.rancher.com/deploying-scaling-kubernetes-ebook。


原文來源:Rancher Labs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章