Rancher入门
Rancher是什么
Rancher是一個(gè)開源的企業(yè)級(jí)容器管理平臺(tái)。通過Rancher,企業(yè)再也不必自己使用一系列的開源軟件去從頭搭建容器服務(wù)平臺(tái)。Rancher提供了在生產(chǎn)環(huán)境中使用的管理Docker和Kubernetes的全棧化容器部署與管理平臺(tái)。
為什么需要Rancher
在原來, 如果我們需要做一個(gè)分布式集群我們需要學(xué)習(xí)一全套的框架并編碼實(shí)現(xiàn)如 服務(wù)發(fā)現(xiàn), 負(fù)載均衡等邏輯, 給開發(fā)者造成很大的負(fù)擔(dān), 不過好在現(xiàn)在有Docker以及他周邊的一些技術(shù)能在上層解決這些問題, 而應(yīng)用該怎么開發(fā)就怎么開發(fā).
當(dāng)你選擇使用Docker技術(shù)棧的時(shí)候, 會(huì)發(fā)現(xiàn)在生產(chǎn)環(huán)境中不光光是 docker run就能解決的. 還需要考慮比如docker之間的組網(wǎng), 縮擴(kuò)容等問題, 于是你去學(xué)習(xí)kubernetes, 發(fā)現(xiàn)好像有點(diǎn)復(fù)雜啊, 有沒有更傻瓜化一點(diǎn)的? 那就是rancher了.
使用Rancher
rancher-server
rancher-server 主要負(fù)責(zé)圖形化管理主機(jī)容器, 并且儲(chǔ)存用戶的數(shù)據(jù)(賬號(hào), 主機(jī)信息, 應(yīng)用(task)等).
他是一個(gè)管理者, 管理工作機(jī)應(yīng)該啟動(dòng)什么容器.
啟動(dòng)
啟動(dòng)一個(gè)單節(jié)點(diǎn)server, 并將數(shù)據(jù)庫數(shù)據(jù)掛載到宿主機(jī), 保證容器刪除后數(shù)據(jù)還在.
sudo docker run -d -v /workspace/rancher/mysql:/var/lib/mysql --restart=unless-stopped -p 8081:8080 rancher/server稍等片刻就能通過訪問8081端口進(jìn)入到Rancher UI
因?yàn)閞ancher前端使用ws和后端通訊, 所以如果使用nginx作為代理訪問這個(gè)服務(wù)器需要這樣設(shè)置:
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";} }配置
添加登陸賬號(hào)
在"ADMIN->Access Contor"添加一個(gè)管理員用于登陸, 我使用的是本地認(rèn)證方式, 沒遇到什么問題就不贅述了.
添加新環(huán)境
在rancher-server中默認(rèn)內(nèi)置了一個(gè)Cattle Template的環(huán)境, 我也不知道Cattle是個(gè)啥, 我們還是用Kubernetes吧, 眼熟.
?
?
點(diǎn)擊Add Environment按鈕
?
這段話我們用中文版本來看:
Rancher 支持將資源分組歸屬到多個(gè)環(huán)境。 每個(gè)環(huán)境具有自己獨(dú)立的基礎(chǔ)架構(gòu)資源及服務(wù),并由一個(gè)或多個(gè)用戶、團(tuán)隊(duì)或組織所管理。
例如,您可以創(chuàng)建獨(dú)立的“開發(fā)”、“測試”及“生產(chǎn)”環(huán)境以確保環(huán)境之間的安全隔離,將“開發(fā)”環(huán)境的訪問權(quán)限賦予全部人員,但限制“生產(chǎn)”環(huán)境的訪問權(quán)限給一個(gè)小的團(tuán)隊(duì)。
先建一個(gè)Test試一試
?
在這個(gè)頁面點(diǎn)擊添加一個(gè)主機(jī)
?
rancher-agent
rancher-agent 也就是主機(jī), 是用來執(zhí)行具體工作的機(jī)器
按照提示來添加主機(jī):
?
在第四步的輸入框中填寫上主機(jī)的ip地址, 在這里我填寫的是10.117.195.190, 這個(gè)ip使用來給ipsec組網(wǎng)的, 所以需要暴露UDP的500和4500端口.
rancher在這里叫你添加的是公網(wǎng)ip, 但在實(shí)際生產(chǎn)環(huán)境中, 不可能每個(gè)主機(jī)都有公網(wǎng)ip并且也不應(yīng)該使用公網(wǎng)建立網(wǎng)絡(luò), 所以我們在這里填寫內(nèi)網(wǎng)(私網(wǎng))ip地址, 只要保證當(dāng)你添加多個(gè)主機(jī)的時(shí)候他們之間的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: 阿里的只需要主機(jī)在同一個(gè)安全組就能實(shí)現(xiàn)內(nèi)網(wǎng)所有端口互通
復(fù)制第五步的代碼到主機(jī)上執(zhí)行, 執(zhí)行之后可以通過以下代碼看它的運(yùn)行情況:
docker logs rancher-agent稍等片刻你就能在rancher的web頁面"INFRASTRUCTURE->Hosts"下找到你剛剛添加的主機(jī).
這時(shí)候能看到這個(gè)主機(jī)的很多服務(wù)(容器)正在啟動(dòng), 不出意外的話能看到這個(gè)樣子的主機(jī):
?
圖太長了, 沒截完, 反正全綠就可以了
疑難雜癥
如果遇到紅色無法啟動(dòng)的容器, 首先查看日志, 找找有用信息, 然后嘗試以下操作:
- 按照錯(cuò)誤日志排錯(cuò), 通過: 經(jīng)驗(yàn)(玄學(xué)), google, issue
- 手動(dòng)點(diǎn)擊重啟這個(gè)錯(cuò)誤容器
- 看一下列出的我遇到的錯(cuò)誤(特別是 重新部署某個(gè)主機(jī))
重新部署某個(gè)主機(jī)
當(dāng)我們在測試或者某個(gè)主機(jī)出現(xiàn)某些難以解決的錯(cuò)誤的時(shí)候, 會(huì)經(jīng)常使用重啟大法, 注意在重新將這個(gè)主機(jī)加入到rancher集群之前需要清理到原來運(yùn)行的container以及掛載出來的volume, 否則的話, 當(dāng)再次啟動(dòng)rancher/agent之后你會(huì)發(fā)現(xiàn)很多服務(wù)啟動(dòng)不了, 如etcd, kubernetes; 一般來說, 只需要清理 kubernetes留下來的東西就好了.
一般如下操作
參考這篇官方文章: 清理主機(jī)
ipsec unhealthy
ipsec會(huì)將所有主機(jī)組網(wǎng), 當(dāng)其中有某個(gè)主機(jī)連接不上的時(shí)候其他ipsec節(jié)點(diǎn)也會(huì)unhealthy, 這時(shí)候就需要檢查是那個(gè)主機(jī)的問題, 看其UDP的500和4500端口是否能與其他主機(jī)互相訪問.
ipsec 無法啟動(dòng)
ipsec會(huì)向rancher-server機(jī)器請(qǐng)求得到其他主機(jī)的ip地址以實(shí)現(xiàn)組網(wǎng).
但我通過查看ipsec的錯(cuò)誤日志發(fā)現(xiàn)這個(gè)ipsec容器訪問不到rancher-server機(jī)器的外網(wǎng)地址, 登陸容器執(zhí)行命令發(fā)現(xiàn)curl http://www.baidu.com都報(bào)錯(cuò), 這種情況下... 我選擇重啟docker(沒辦法了啊, 如果讀者有解決方案感謝告訴我哦).
但請(qǐng)謹(jǐn)慎操作呀 service docker restart會(huì)重啟所有的容器, 這將導(dǎo)致所有服務(wù)不可用.
etcd無法啟動(dòng)
好像etcd無法啟動(dòng)和ipsec沒有正常運(yùn)行有關(guān), 所以先解決ipsec的問題
在上面說了記得刪除volume etcd
更多的可以參考這篇官方文章: 災(zāi)難恢復(fù)
etcd節(jié)點(diǎn)無限重啟
如果你在"INFRASTRUCTURE->Containers"中看到紅色的etcd容器并且在不斷重啟, 不要驚訝.
?
在災(zāi)難恢復(fù)中說到 Rancher在三個(gè)不同的主機(jī)上運(yùn)行多達(dá)三個(gè) etcd 實(shí)例, 猜測Rancher會(huì)一直在不同的主機(jī)上啟動(dòng)etcd直到滿足三個(gè)節(jié)點(diǎn), 不過etcd也支持低于三個(gè)節(jié)點(diǎn)的, 所以正常使用是沒問題的. 如果實(shí)在看不順眼就添加3個(gè)或以上的主機(jī).
?
總結(jié)
- 上一篇: github的webhooks无法刷新c
- 下一篇: Hiredis库的简单使用