* Rancher概覽
Rancher是一個開源的企業(yè)級容器管理平臺。通過Rancher,企業(yè)再也不必自己使用一系列的開源軟件去從頭搭建容器服務(wù)平臺。Rancher提供了在生產(chǎn)環(huán)境中使用的管理Docker和Kubernetes的全?;萜鞑渴鹋c管理平臺。
Rancher由以下四個部分組成:
基礎(chǔ)設(shè)施編排
Rancher可以使用任何公有云或者私有云的Linux主機(jī)資源。Linux主機(jī)可以是虛擬機(jī),也可以是物理機(jī)。Rancher僅需要主機(jī)有CPU,內(nèi)存,本地磁盤和網(wǎng)絡(luò)資源。從Rancher的角度來說,一臺云廠商提供的云主機(jī)和一臺自己的物理機(jī)是一樣的。
Rancher為運(yùn)行容器化的應(yīng)用實(shí)現(xiàn)了一層靈活的基礎(chǔ)設(shè)施服務(wù)。Rancher的基礎(chǔ)設(shè)施服務(wù)包括網(wǎng)絡(luò), 存儲, 負(fù)載均衡, DNS和安全模塊。Rancher的基礎(chǔ)設(shè)施服務(wù)也是通過容器部署的,所以同樣Rancher的基礎(chǔ)設(shè)施服務(wù)可以運(yùn)行在任何Linux主機(jī)上。
容器編排與調(diào)度
很多用戶都會選擇使用容器編排調(diào)度框架來運(yùn)行容器化應(yīng)用。Rancher包含了當(dāng)前全部主流的編排調(diào)度引擎,例如Docker Swarm, Kubernetes, 和Mesos。同一個用戶可以創(chuàng)建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理應(yīng)用。
除了Swarm,Kubernetes和Mesos之外,Rancher還支持自己的Cattle容器編排調(diào)度引擎。Cattle被廣泛用于編排Rancher自己的基礎(chǔ)設(shè)施服務(wù)以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理與升級。
應(yīng)用商店
Rancher的用戶可以在應(yīng)用商店里一鍵部署由多個容器組成的應(yīng)用。用戶可以管理這個部署的應(yīng)用,并且可以在這個應(yīng)用有新的可用版本時進(jìn)行自動化的升級。Rancher提供了一個由Rancher社區(qū)維護(hù)的應(yīng)用商店,其中包括了一系列的流行應(yīng)用。Rancher的用戶也可以創(chuàng)建自己的私有應(yīng)用商店。
企業(yè)級權(quán)限管理
Rancher支持靈活的插件式的用戶認(rèn)證。支持Active Directory,LDAP, Github等 認(rèn)證方式。 Rancher支持在環(huán)境級別的基于角色的訪問控制 (RBAC),可以通過角色來配置某個用戶或者用戶組對開發(fā)環(huán)境或者生產(chǎn)環(huán)境的訪問權(quán)限。
下圖展示了Rancher的主要組件和功能:
* Rancher Server安裝
準(zhǔn)備linux主機(jī):CentOS7 (docker環(huán)境)
主機(jī)IP:192.168.18.113(Rancher服務(wù)器)
主機(jī)IP:192.168.18.114
Docker安裝
添加yum源:
$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF
yum緩存更新,安裝docker-engine。
$ sudo yum update (不更新Linux內(nèi)核系統(tǒng),不操作) $ sudo yum install -y docker-engine
啟動docker。
systemctl start docker.service systemctl enable docker.service
Rancher服務(wù)器啟動(單容器部署)
Rancher單容器部署無需考慮數(shù)據(jù)庫(rancher使用內(nèi)部數(shù)據(jù)庫,測試環(huán)境使用)。$ sudo docker run -d --restart=always -p 8080:8080 rancher/server
Rancher單容器部署使用外部數(shù)據(jù)庫Link。$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server --db-host xxx --db-port 3306 --db-user username --db-pass password --db-name dbname
rancher/server:latest最新版,rancher/server:stable穩(wěn)定版生產(chǎn)環(huán)境建議使用此版本。
單容器安裝部署$ sudo docker run -d --restart=always -p 8080:8080 rancher/server
顯示 Rancher 服務(wù)器的容器 ID,替換containerid
$ sudo docker ps docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1164aef82ff rancher/server "/usr/bin/entry /u..." 9 minutes ago Up 9 minutes 3306/tcp, 0.0.0.0:8080->8080/tcp vigorous_wing
顯示并查看 Rancher 服務(wù)器的日志
$ sudo docker logs -f containerid docker logs -f b1164aef82ff
啟動 Rancher 服務(wù)器可能需要花幾分鐘時間。這取決于下載 Rancher Server鏡像的速度(sudo docker run -d –restart=always -p 8080:8080 rancher/server,目前很慢,花了一個晚上自己下載)。當(dāng)日志中顯示 “…. Startup Succeeded, Listening on port…” 以后,Rancher UI 圖形界面現(xiàn)在就能正常訪問。
添加主機(jī)
添加運(yùn)行Rancher服務(wù)器容器的主機(jī)。而在實(shí)際的生產(chǎn)環(huán)境中,建議使用專用的主機(jī)來運(yùn)行Rancher服務(wù)器。
另一臺主機(jī)IP:192.168.18.114已經(jīng)安裝好docker。
點(diǎn)擊圖形界面的 Infrastructure 標(biāo)簽來添加主機(jī),然后您將會看到 Hosts 頁面。Rancher 會提示您選擇一個 IP 地址。這個 IP 地址必須可以被所有即將添加的主機(jī)訪問到。
添加 Rancher 服務(wù)器主機(jī)自身,因此我們可以忽略這個提示信息。點(diǎn)擊 Save ;
進(jìn)入默認(rèn)的Custom 選項(xiàng)頁面,可以得到運(yùn)行 rancher/agent 容器的命令。在每臺需要添加到rancher控制臺的主機(jī)上運(yùn)行 rancher/agent。
Rancher 提供的用于添加主機(jī)的命令如下:
$ sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.18.113:8080/v1/scripts/273C726DB6B906917F5B:1514678400000:7Do96pJNElcw1OYHz1aGuiQKe
在運(yùn)行 Rancher 服務(wù)器的主機(jī)上運(yùn)行 rancher/agent 容器命令。
在 Rancher 的頁面中點(diǎn)擊 Close 按鈕后,您會被返回到 Infrastructure -> Hosts 頁面。在一兩分鐘后,這個主機(jī)將自動出現(xiàn)在這里。
使用圖形界面創(chuàng)建一容器
進(jìn)入 Applications -> Stacks 頁面,如果這里還沒有服務(wù),你可以點(diǎn)擊 “Add Service” 按鈕。你可以輸入一個類似 “firstcontainer” 的名字。您現(xiàn)在使用默認(rèn)配置并點(diǎn)擊 Create 。Rancher 將開始在這個主機(jī)上啟動兩個容器。一個容器是您所創(chuàng)建的名為firstcontainer ;另外一個容器是Network Agent,這是個由 Rancher 創(chuàng)建的系統(tǒng)容器,它用來處理擴(kuò)主機(jī)聯(lián)網(wǎng)和健康檢查等任務(wù)。
不管你的主機(jī)是什么 IP 地址,first_container 和 Network Agent 將會的到 10.42.. 網(wǎng)段的 IP 地址。Rancher 已經(jīng)創(chuàng)建了能在不同主機(jī)之上的讓所有容器可以相互通信的覆蓋網(wǎng)絡(luò)。
如果你點(diǎn)擊 first_container的下拉菜單,你可以執(zhí)行各種動作,例如:停止容器,查看日志,或者進(jìn)入容器的控制臺。
使用docker原生命令創(chuàng)建一容器
Rancher 會顯示所有在主機(jī)上的容器,即使有些容器是在圖形界面之外創(chuàng)建的。在主機(jī)的 shell 命令行里創(chuàng)建一個容器。阿里云鏡像倉庫中pull下來。$ docker run -it --name=container-tomcat-qa registry.cn-hangzhou.aliyuncs.com/xmbaby-test/test-tomcat
在Rancher圖形界面中,你將看到container-tomcat-qa在你的主機(jī)上出現(xiàn)!
如果通過退出命令行來退出(ctrl+C)用命令方式創(chuàng)建的容器,在 Rancher 圖形界面中將立刻顯示這個容器的狀態(tài)為停止。
Rancher 可以對帶外發(fā)生的事件作出反應(yīng),并把當(dāng)前的顯示狀況如實(shí)地整合在它的視圖中。
如果你查看容器container-tomcat-qa的 IP 地址,你會注意到他不在 10.42.. 網(wǎng)段中。它的 IP 地址是通過 Docker 后臺服務(wù)獲得的。這是通過命令行方式創(chuàng)建容器的正常的結(jié)果。
如果希望通過命令行創(chuàng)建的容器依然具有 Ranger 覆蓋網(wǎng)絡(luò)的網(wǎng)絡(luò)地址呢?我們所需要做的就僅僅是在命令中加一個標(biāo)簽。$ [root@rancher-qa ~]# docker run -it --label io.rancher.container.network=true --name=container-tomcat-qa11 registry.cn-hangzhou.aliyuncs.com/xmbaby-test/test-tomcat
標(biāo)簽 io.rancher.container.network 讓我們通過命令行傳遞了一個通知,這樣 Rancher 會為把容器配置為連接到覆蓋網(wǎng)絡(luò)。