rancher 入門

Rancher是什麼

Rancher是一個開源的企業級容器管理平臺。通過Rancher,企業再也不必自己使用一系列的開源軟件去從頭搭建容器服務平臺。Rancher提供了在生產環境中使用的管理Docker和Kubernetes的全棧化容器部署與管理平臺。

爲什麼需要Rancher

在原來, 如果我們需要做一個分佈式集羣我們需要學習一全套的框架並編碼實現如 服務發現, 負載均衡等邏輯, 給開發者造成很大的負擔, 不過好在現在有Docker以及他周邊的一些技術能在上層解決這些問題, 而應用該怎麼開發就怎麼開發.

當你選擇使用Docker技術棧的時候, 會發現在生產環境中不光光是 docker run就能解決的. 還需要考慮比如docker之間的組網, 縮擴容等問題, 於是你去學習kubernetes, 發現好像有點複雜啊, 有沒有更傻瓜化一點的? 那就是rancher了.

使用Rancher

rancher-server

rancher-server 主要負責圖形化管理主機容器, 並且儲存用戶的數據(賬號, 主機信息, 應用(task)等).

他是一個管理者, 管理工作機應該啓動什麼容器.

啓動

啓動一個單節點server, 並將數據庫數據掛載到宿主機, 保證容器刪除後數據還在.

sudo docker run -d -v /workspace/rancher/mysql:/var/lib/mysql --restart=unless-stopped -p 8081:8080 rancher/server

稍等片刻就能通過訪問8081端口進入到Rancher UI

因爲rancher前端使用ws和後端通訊, 所以如果使用nginx作爲代理訪問這個服務器需要這樣設置:

server {
        listen 80;
        server_name rancher.bysir.store;

        location / {
                proxy_set_header Host $http_host;
                proxy_pass http://127.0.0.1:8081;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

        }
}

配置

添加登陸賬號

在"ADMIN->Access Contor"添加一個管理員用於登陸, 我使用的是本地認證方式, 沒遇到什麼問題就不贅述了.

添加新環境

在rancher-server中默認內置了一個Cattle Template的環境, 我也不知道Cattle是個啥, 我們還是用Kubernetes吧, 眼熟.

 

 

點擊Add Environment按鈕

 

這段話我們用中文版本來看:

Rancher 支持將資源分組歸屬到多個環境。 每個環境具有自己獨立的基礎架構資源及服務,並由一個或多個用戶、團隊或組織所管理。
例如,您可以創建獨立的“開發”、“測試”及“生產”環境以確保環境之間的安全隔離,將“開發”環境的訪問權限賦予全部人員,但限制“生產”環境的訪問權限給一個小的團隊。

先建一個Test試一試

 

在這個頁面點擊添加一個主機

 

rancher-agent

rancher-agent 也就是主機, 是用來執行具體工作的機器

按照提示來添加主機:

 

在第四步的輸入框中填寫上主機的ip地址, 在這裏我填寫的是10.117.195.190, 這個ip使用來給ipsec組網的, 所以需要暴露UDP的500和4500端口.

rancher在這裏叫你添加的是公網ip, 但在實際生產環境中, 不可能每個主機都有公網ip並且也不應該使用公網建立網絡, 所以我們在這裏填寫內網(私網)ip地址, 只要保證當你添加多個主機的時候他們之間的UDP500和4500能互相訪問.

PS: 可以通過以下代碼測試端口連通性:

$ nc -u -z -v 10.25.170.125 4500
Connection to 10.25.170.125 4500 port [udp/ipsec-nat-t] succeeded!

PPS: 阿里的只需要主機在同一個安全組就能實現內網所有端口互通

複製第五步的代碼到主機上執行, 執行之後可以通過以下代碼看它的運行情況:

docker logs rancher-agent

稍等片刻你就能在rancher的web頁面"INFRASTRUCTURE->Hosts"下找到你剛剛添加的主機.

這時候能看到這個主機的很多服務(容器)正在啓動, 不出意外的話能看到這個樣子的主機:

 

圖太長了, 沒截完, 反正全綠就可以了

疑難雜症

如果遇到紅色無法啓動的容器, 首先查看日誌, 找找有用信息, 然後嘗試以下操作:

  • 按照錯誤日誌排錯, 通過: 經驗(玄學), google, issue
  • 手動點擊重啓這個錯誤容器
  • 看一下列出的我遇到的錯誤(特別是 重新部署某個主機)

重新部署某個主機

當我們在測試或者某個主機出現某些難以解決的錯誤的時候, 會經常使用重啓大法, 注意在重新將這個主機加入到rancher集羣之前需要清理到原來運行的container以及掛載出來的volume, 否則的話, 當再次啓動rancher/agent之後你會發現很多服務啓動不了, 如etcd, kubernetes; 一般來說, 只需要清理 kubernetes留下來的東西就好了.

一般如下操作

  1. docker volume rm etcd, 如果提示它被某個容器使用了就停止掉這個容器後再操作
  2. rm -rf /var/etcd/backups, 刪除etcd掛載出來的數據

參考這篇官方文章: 清理主機

ipsec unhealthy

ipsec會將所有主機組網, 當其中有某個主機連接不上的時候其他ipsec節點也會unhealthy, 這時候就需要檢查是那個主機的問題, 看其UDP的500和4500端口是否能與其他主機互相訪問.

ipsec 無法啓動

ipsec會向rancher-server機器請求得到其他主機的ip地址以實現組網.

但我通過查看ipsec的錯誤日誌發現這個ipsec容器訪問不到rancher-server機器的外網地址, 登陸容器執行命令發現curl http://www.baidu.com都報錯, 這種情況下... 我選擇重啓docker(沒辦法了啊, 如果讀者有解決方案感謝告訴我哦).

但請謹慎操作呀 service docker restart會重啓所有的容器, 這將導致所有服務不可用.

etcd無法啓動

好像etcd無法啓動和ipsec沒有正常運行有關, 所以先解決ipsec的問題

在上面說了記得刪除volume etcd

更多的可以參考這篇官方文章: 災難恢復

etcd節點無限重啓

如果你在"INFRASTRUCTURE->Containers"中看到紅色的etcd容器並且在不斷重啓, 不要驚訝.

 

災難恢復中說到 Rancher在三個不同的主機上運行多達三個 etcd 實例, 猜測Rancher會一直在不同的主機上啓動etcd直到滿足三個節點, 不過etcd也支持低於三個節點的, 所以正常使用是沒問題的. 如果實在看不順眼就添加3個或以上的主機.



轉載自:
鏈接:https://www.jianshu.com/p/3a492440c89b

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