有時候,咱們沒法使用像GKE或AKE這樣的託管服務,甚至處於離線或與外網隔離的狀態,而沒法直接訪問互聯網。然而,即便在這種狀況下,仍然是有方法使用Rancher管理集羣的。git
本文中,咱們將向你介紹如何在離線或內網環境中運行Rancher 2.0。github
由於全部與Rancher相關的服務都在容器中運行,所以首先你須要的是在環境中存儲容器。在本文的示例中,咱們將使用Docker Registry(Docker鏡像倉庫)。若是你已經有了鏡像倉庫,能夠跳過這些步驟。docker
注意:在Rancher 2.0中,只有沒有身份認證的鏡像倉庫才能獲取啓動和運行Rancher 2.0所需的全部鏡像。這並不會影響在工做負載中使用的可配置鏡像倉庫。負載均衡
要運行Docker Registry,你須要運行一個registry:2鏡像的實例。咱們將公開默認端口(5000),掛載一個主機目錄確保咱們有足夠的空間(至少須要8GB)而且得到適當的I/O性能。dom
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/docker-registry:/var/lib/registry registry:2
在鏡像倉庫設置完成後,就開始同步所需的鏡像來運行Rancher 2.0。這一步驟咱們將討論兩個場景:性能
場景1:你有一臺可訪問DockerHub的主機來提取和保存鏡像,另有一臺能夠訪問你的私有鏡像倉庫的單獨的主機,以用於push鏡像。插件
場景2:你有一臺能夠訪問DockerHub以及私有鏡像倉庫的主機。代理
場景1:一臺主機訪問DockerHub,另外一臺訪問私有鏡像倉庫rest
Rancher每一次的版本更新發布(https://github.com/rancher/rancher/releases/tag/v2.0.0),都會隨之提供針對這一場景的插件。你須要以下腳本:code
**rancher-save-images.sh:**該腳本將從DockerHub中拉取全部須要的鏡像,而且將全部鏡像保存成一個rancher-images.tar.gz壓縮文件。能夠將該文件傳輸到可以訪問你私人鏡像倉庫的內部部署主機上。
**rancher-load-images.sh:**該腳本將從rancher-images.tar.gz中加載鏡像,將它們push到你的私有鏡像倉庫。在腳本的第一個參數須要提供私有鏡像倉庫的主機名rancher-load-images.sh registry.yourdomain.com:5000
場景一的流程
場景2:一臺能夠訪問DockerHub以及私有鏡像倉庫的主機
針對這一場景,Rancher每一次的版本更新時
(https://github.com/rancher/rancher/releases/tag/v2.0.0),都會提供一個名爲rancher-images.txt的文件。該文件包含了運行Rancher 2.0所須要的所有鏡像。能夠將它綁定到任何現有的自動化服務中同步你可能擁有的鏡像,也可使用我在下面展現的腳本/Docker鏡像。
場景二的流程
流程的最後一步是配置Rancher,將私有鏡像倉庫做爲獲取鏡像的源。這能夠經過在Setting視圖中使用system-default-registry進行配置。
設置欄
若想要使用私有鏡像倉庫,在配置設置時不要使用https:// 或http://做爲前綴
這樣作能夠確保那些被用於向集羣添加節點的rancher/rancher-agent容器,會使用該值做爲前綴。其餘須要使用的鏡像也須要這樣配置。
若是你想在啓動rancher/rancher容器時進行配置,可使用環境變量CATTLE_SYSTEM_DEFAULT_REGISTRY
例如:
docker run -d -p 80:80 -p 443:443 -e CATTLE_SYSTEM_DEFAULT_REGISTRY=registry.yourdomain.com:5000 registry.yourdomain.com:5000/rancher/rancher:v2.0.0
你能夠經過運行rancher/rancher容器所在主機的IP來訪問Rancher 2.0 UI。最開始啓動大約須要1分鐘,第一次訪問時系統會提示你設置密碼。
設置密碼
接下來,你須要配置URL,節點將經過該地址和Rancher 2.0安裝創建聯繫。在默認狀況下,它會顯示你訪問UI的IP地址,不過當你想使用DNS名稱或者負載均衡器的話,你能夠在這裏進行更改。
在Global視圖中,點擊Add Cluster
_ 添加集羣_
本文會帶領你建立一個沒有高級選項的custom集羣。想要在你的集羣中配置高級選項,請參考相關的文檔。
添加名叫testcluster的自定義集羣
點擊Next,建立testcluster集羣。
在下一個界面,你會得到一個生成的命令,用於在你想要添加到集羣的節點上啓動。在該命令中使用的鏡像應該會自動地用你配置好的私有鏡像倉庫做爲前綴。
爲集羣添加節點
如今,對你想要添加的節點,你能夠選擇要爲它們使用哪些角色,而且能夠選擇配置該節點的IP。若是沒有指定,則會自動檢測IP。有關Node Roles的含義,也請參考文檔。
如前所述,目前Rancher 2.0還不支持使用帶有身份認證的私有鏡像倉庫來運行Rancher 2.0須要的鏡像。不過在這種狀況下,Rancher 2.0支持project中的工做負載。
想要使用身份認證配置鏡像倉庫,你能夠在集羣中打開你的項目(Default項目是自動爲你建立的)。在Default項目中,能夠導航到Resources->Registries來配置用於工做負載的鏡像倉庫。
在project默認設置裏配置鏡像倉庫
點擊Add Registry
添加鏡像倉庫
填寫訪問鏡像倉庫所需的信息:
但願這篇指南可以幫助你們進一步瞭解如何在離線或內網環境中設置Rancher 2.0。咱們知道不少環境中還會有代理,咱們後續還會發布代理設置的相關文章,敬請期待!
最後附上我在本文中用到的一些命令,但願它們可以爲你所用或帶給你更多靈感。