衆所周知,亞馬遜有EC2容器服務,它是亞馬遜用於運行Docker容器的解決方案。不過我覺得EC2容器服務不怎麼好用,所以現在我要在AWS上測試Rancher和Kubernetes。
Kubernetes是一個用以自動化部署、彈性伸縮以及管理容器化應用程序的開源系統。Rancher是一個可用於企業內部的完整的容器管理和運行平臺,它提供企業級的訪問控制和容器編排。
Rancher環境部署
第一步,我會按默認的嚮導創建一個新的虛擬私有云,這個虛擬私有云是爲Rancher準備的。接下來的事情就是創建一個或多個新主機,Rancher文檔說要手動安裝Docker,我在這裏選擇了RancherOS AMI。AMI是專門爲這個目的而生的,而且它非常的小(甚至於curl都沒有被安裝)。
安全組限制了只有我的IP纔可以訪問TCP端口 k8080。這一點很重要,因爲默認的設定是不會啓動授權的。在不同主機間允許彼此的訪問也是件非常棒的事情,這可以通過保存安全組來完成(然後順利拿到sg- identifier),並向那個安全組中添加所有訪問權限。
當新的instance準備就緒,只需使用SSH連接並且用sudo docker run -d --restart=always -p 8080:8080 rancher/server啓動Rancher服務器Docker image就好了。Rancher的應用程序將自己在Docker image內運行。
你可以用the docker logs -f {containerid}命令跟蹤日誌:
一切完美!Rancher server開始啓動了。你可以瀏覽到這個實例的IP,默認情況下,Rancher server將在端口8080上運行。所有的主機都可以使用公有的IP,可如果你是在虛擬私有云上有主機的話,這就有點麻煩了,所以你可以選擇使用私有IP而非公有IP。這可以在管理和設置裏進行更改。
當Rancher server啓動並運行了,我們需要添加一些Docker主機。你可以啓動一個新的主機(這很讚的,因爲它會啓動另一個有着相同配置的實例),或者你可以添加和server中的主機一樣的主機(不過這不是最好的辦法)。
Kubernetes環境部署
接下來,在Rancher server中的添加一個新的主機,點擊Infrastructure,然後再點擊Add Host 。主機添加完了之後,您可以添加Kubernetes環境了。 Kubernetes隨後將自動部署到新的主機上。
這將需要幾分鐘的時間,你可以通過選擇環境監視其當前的狀態:
Kubernetes環境創建完成後,您可以導航到Catalog裏部署一個容器。例如,選擇K8S Example Ghost容器——它幾乎不需要花時間,就能瞬間啓動並運行起來:
在部署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:
然後創建Docker image:
給image打上標籤:
push 這個image去registry:
如果你想更多地瞭解如何在Rancher上運行Kubernetes,可以訪問這裏:
原文來源:Rancher Labs