1. 程式人生 > >極簡的選擇! iPXE+RancherOS+RancherLabs 實現 自動化 急速 大規模 批量部署 Docker 容器 節點 及 編排

極簡的選擇! iPXE+RancherOS+RancherLabs 實現 自動化 急速 大規模 批量部署 Docker 容器 節點 及 編排

RancherOS (v0.7.1) # 1.下載部署包,點這裡下載,由於CSDN資源限制原因,其中不包含ros.tar.xz,需要完整包點這裡 # 2.按需修改檔案引數:1.boot.txt  2.ros-install.sh(標紅按需修改,.sh為linux指令碼,win下要專業編輯器 # 3.在伺服器上執行 pxesrv.exe,全部選項已經在配置檔案中設定完畢,無需更改變動,直接執行即可。 # 4.修改客戶端節點裝置 BIOS 為 PXE 啟動,開機後便批量自動安裝,無需人員值守,安裝時長不到 2 分鐘。 # 5.安裝中途請檢視 flag 資料夾,會有檔案生成,可以檢視該節點裝置安裝狀態,如果該資料夾中生成有狀態檔案,該節點機器無法再次安裝系統,必須刪除該狀態檔案才可以重新安裝該節點。
# 6.用 SSH 工具登入安裝完畢的節點,必須匯入私鑰登入,該私鑰沒有加密,直接登入即可。 iPXE-RancherOS ├── root │   │   └── flag            # 該目錄儲存批量安裝節點的狀態檔案(如果該節點有狀態存在,無法再次安裝) │   ├── ros.tar.xz         # System-Docker Save 包(命令:docker save rancher/os | xz > ros.tar.xz) │   ├── vmlinuz           # 官方 GIT 下載 │   ├── ros-install.sh
   # 自動安裝指令碼
│   ├── ipxe.pxe          # iPXE 引導檔案
│   ├── initrd               # 官方 GIT 下載 │   ├── boot.txt           # iPXE 執行指令碼
│   └── 2048.rsa          # 登入節點的私鑰 ├── pxesrv.exe            # tiny pxe server 執行檔案 └── config.ini              # tiny pxe server 配置檔案 # boot.txt #!ipxe # Boot a persistent RancherOS to RAM # Location of Kernel/Initrd images # iPXE 的 httpd 地址
set server-url http://192.168.1.2 kernel ${server-url}/vmlinuz rancher.state.formatzero=true rancher.cloud_init.datasources=[url:${server-url}/ros-install.sh] initrd ${server-url}/initrd boot # ros-install.sh #!/bin/sh # 網絡卡介面名稱  IFACE_NAME='eth0' # RancherOS 的 Docker save 包 TAR_NAME='ros.tar.xz' # 需要安裝所在位置碟符 HDD_NAME='/dev/sda' # 伺服器 IP (iPXE) SERVER_IP='192.168.1.2' # DNS IP DNS='114.114.114.114' # 加速器 地址 REGISTRY='http://XXXXX.m.daocloud.io' # 私有倉庫 地址 PRIV_REGISTRY='192.168.1.254:5000' # 管理 公鑰 (首次安裝無法直接登陸,必須用私鑰登陸節點,然後 sudo passwd rancher 修改密碼,私鑰在包內提供 2048.rsa) PUBLIC_KEY='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxgLYkQJFt0F64X7FP1iwOi4JJcgwZntSCdBgwfkq6CHduudlrswnJHrnDBVc9OIc9jRnC0AWwp6miqPAn3R5hZ6xWjWalXBZfwic4ibbGp1sEGemGTSP6+M5xMpJUacy/u7qdkwof08vAFGzFIhKw3nQ34tSU0TTcHtpx+KR/ZXlYR6Q7ek8RJPk2cei/m/zVe4jHsLHHWKbeyC+f2aRudWKohnU5qlQuMH753PkcyVzVThKDdTVTgMnjhyPErEUY4ajjvPngM11XcpnA+zaS98VH2YYsFXsCTbux4n7/ZnemuQhQdTO8EpSVLNnNMDwhP4L8lDra5aQ77uXqqnWAQ==' # 獲取客戶端 IP 地址(從網絡卡資訊自動獲取) CLIENT_IP=`ifconfig $IFACE_NAME | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'` # 獲取客戶端 掩碼(從 DHCP 路由條目自動獲取) CLIENT_IP_NETMASK=`ip route show | grep $IFACE_NAME | grep "proto" | awk '{ print $1}' | awk -F/ '{print $2}'` # 獲取客戶端 閘道器(從預設路由自動獲取) GATEWAY=`ip route show | grep "default" | awk '{ print $3}'` # 獲取主機名 前段(從 tar.xz 包檔名自動擷取) HOST_NAME1=`echo $TAR_NAME | awk -F. '{print $1}'` # 獲取主機名 後端(從 DHCP 的 IP 主機位自動獲取) HOST_NAME2=`echo $CLIENT_IP | awk -F. '{print $4}'` #echo $CLIENT_IP_NETMASK $GATEWAY $HOST_NAME1$HOST_NAME2 # 從伺服器檢測 OK 標誌符,如果有,則關機 if tftp -g $SERVER_IP -r /flag/$HOST_NAME1$HOST_NAME2.ok.rsa.pub -l a  ; then halt ; fi # 從伺服器檢測 err 標誌符 if tftp -g $SERVER_IP -r /flag/$HOST_NAME1$HOST_NAME2.err.dmesg -l b  ; then halt ; fi # 從伺服器下載 System-Docker 映象 並 load wget $SERVER_IP/$TAR_NAME && sudo system-docker load -i $TAR_NAME # 寫 RancherOS 安裝配置檔案 cat > "cloud-config.yml" << EOF #cloud-config # 配置 主機名 hostname: $HOST_NAME1$HOST_NAME2 rancher:   docker:     extra_args:     # 使用者 Docker 的加速器地址     - --registry-mirror     - $REGISTRY     # 使用者 Docker 的私服地址     - --insecure-registry     - $PRIV_REGISTRY   network:     dns:       nameservers:       - $DNS     interfaces:       # 關閉所有網絡卡的 DHCP       eth*:         dhcp: false       eth0:         address: $CLIENT_IP/$CLIENT_IP_NETMASK         gateway: $GATEWAY         mtu: 1500   state:     fstype: auto     dev: LABEL=RANCHER_STATE     autoformat:       - $HDD_NAME # 公鑰 ssh_authorized_keys: - $PUBLIC_KEY EOF # 開始安裝 RancherOS 系統至硬碟 ros install --no-reboot -f -c cloud-config.yml -d $HDD_NAME # 如果安裝成功,返回(真)傳遞給伺服器 flag OK 資訊,包含公鑰做 SSH 對等 # 如果安裝失敗,返回(假)傳遞給伺服器 flag err 資訊,包含 dmesg 啟動日誌 if (($?)) ; then dmesg > dmesg && tftp -p $SERVER_IP -r /flag/$HOST_NAME1$HOST_NAME2.err.dmesg -l dmesg ; else ssh-keygen  -t rsa -N '' -f ~/.ssh/id_rsa -q -b 2048 && tftp -p $SERVER_IP -r /flag/$HOST_NAME1$HOST_NAME2.ok.rsa.pub -l ~/.ssh/id_rsa.pub ; fi #重啟節點客戶端機器 reboot ————————————————————————————————————————————————————— # ros & system-docker  常用命令 sudo ros os version sudo system-docker ps sudo ros console switch ubuntu sudo ros config set rancher.password rancher sudo ros config set rancher.network.interfaces.eth*.dhcp false
sudo ros config set rancher.network.interfaces.eth0.address 192.168.1.82/24 sudo ros config set rancher.network.interfaces.eth0.gateway 192.168.1.1 sudo ros config set rancher.network.dns.nameservers "['218.2.135.1','114.114.114.114']" # system-docker.extra_args 好像不生效,如有大神知道,請告知。 sudo ros config set rancher.system-docker.extra_args "['--registry-mirror','http://552fb0d9.m.daocloud.io','--insecure-registry','192.168.1.89:5000']" sudo ros config set rancher.docker.extra_args "['--registry-mirror','http://552fb0d9.m.daocloud.io','--insecure-registry','192.168.1.89:5000']"
sudo system-docker restart docker sudo ros config export vi /var/lib/rancher/conf/cloud-config.yml
—————————————————————————————————————————————————————— RancherLabs (rancher/server:v1.3.1,rancher/agent:v1.1.3)
# mysql 安裝(該節點很重要,不能宕機,有負載均衡器和資料庫) docker run -d --name mysql--restart=unless-stopped -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql/mysql-server docker exec -it $? bash # 配置 rancher/server 資料庫 表 和 使用者 mysql -uroot -proot CREATE DATABASE IF NOT EXISTScattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8'; GRANT ALL ONcattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle'; GRANT ALL ONcattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle'; flush privileges; # haproxy 安裝(Rancher HA 前置 LB,在 mysql 節點上安裝,兩個 IP 為 Rancher/Server 地址) sudo su mkdir -p /opt/haproxy cat > /opt/haproxy/haproxy.cfg <<EOF defaults     mode http     option forwardfor     timeout client 50000     timeout connect 5000     timeout server 50000 listen Rancher-HA     bind *:80     balance roundrobin     server web1 192.168.1.109:8080 check     server web2 192.168.1.108:8080 check listen stats     bind *:6666
    stats refresh 3s     stats uri / EOF docker run -d --name haproxy --restart=unless-stopped -p 80:80 -p:6666:6666 -v /opt/haproxy:/usr/local/etc/haproxy haproxy # haproxy 安裝完畢 可以登入該節點 IP 檢視狀態 http://haproxy-ip:6666 # rancher 安裝(這裡僅介紹 雙活 HA 模式,資料庫地址為 mysql 節點 IP,最後的地址為本機 IP) sudo docker run -d --name rancher --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server --db-host 192.168.1.111 --advertise-address 192.168.1.109
# 最後,登入 rancher 介面,新增 rancher/agent 節點都需要使用 haproxy 的 IP 地址才能實現真正意義上的雙活 HA。

相關推薦

選擇 iPXE+RancherOS+RancherLabs 實現 自動化 急速 大規模 批量部署 Docker 容器 節點 編排

RancherOS (v0.7.1) # 1.下載部署包,點這裡下載,由於CSDN資源限制原因,其中不包含ros.tar.xz,需要完整包點這裡。 # 2.按需修改檔案引數:1.boot.txt

Python教程

1.Python的版本 Python有Python 2.x和Python 3.x兩個版本。Python 3.x沒有相容Python 2.x, 也就是說,用Python 3.x寫的程式碼在Python 2.x下不一定能執行。 本教程使用 Python 3.x,作業系統為 windows 1

的選單欄收放實現

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>選單收放</title> <scr

scratch-3分鐘入門教程

scratch是一款由麻省理工學院(MIT)設計開發的少兒程式設計工具。使用者可以不認識英文單詞,也可以不會使用鍵盤。就像搭積木一樣把一塊塊積木形狀的命令用滑鼠拖拽到一起就可以了。超級簡單,5-6的孩子就可以學習程式設計了,SO AMAZING! 但是簡單並不

tinker整合方法之使用tinkerpatch平臺快速整合

今天試了一下tinker的熱更新修復技術,對比起來,彷彿是目前最佳的熱更新方案。具體文件連結點選開啟連結,裡面寫的很簡單,也很直觀,並且把資料也給全了。正常情況下跟著做一邊操作不會有任何問題。那麼我們來看看具體踩過的坑

主義讓手機壁紙,驚現高級臉Feel~

真的是 電腦 美體 今天 推薦 jpg 喜歡 黑屏 技術 相信大家都非常熟悉,喬布斯一生設計的產品都在追求極簡主義,修姐也是一個追求簡單但不失儀式感的生活,手機壁紙也不例外,最近修姐發現一套純色壁紙,真的是歡喜的不得了! 今天必須要給大家推薦這一套hen不一樣的純色壁紙,

真正牛逼的人,都是主義者

## 寫在前面 一個真正牛逼的人,都是極簡主義者;一款真正偉大的產品,都是極簡主義的產品。一個人只要簡單的專注於自己的領域,在思想上刪繁就簡,成為某個領域和某個行業的專家是很順其自然的事情。一款產品,立足於使用者剛需,解決使用者痛點,在不斷的發展和迭代過程中,不斷挖掘使用者的潛在需求,真正能夠解決使用者的剛

原生JS輪播-各種效果的實現

star element length for sha 部分 wid 方式 高度 寒假持續摸魚中~此為老早以前博客的重寫,當時還是分開寫的,這裏匯總重寫,正好復習一遍~ 春招我來了! 所有有意思的,一股腦先扔進收藏,然後再也不看哈哈,真是糟糕。 今日事,今日畢,說起來容易

使用Python3 實現區塊鏈-熊麗兵-專題視訊課程

使用Python3 實現極簡區塊鏈—10人已學習 課程介紹         如果你懂區塊鏈原理,知道一個區塊是打包了一個交易,以及如何形成共識等等,但是不知道如何使用程式碼實現區塊鏈。那這門課程你一

超詳細 Nginx 教程,傻瓜一看也會

什麼是Nginx? Nginx (engine x) 是一款輕量級的Web 伺服器 、反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。 什麼是反向代理? 反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從

linux搭建初始php環境(

1.安裝apache [[email protected]_0_5_centos /]# yum -y install httpd   出現下圖表示安裝成功!     2.安裝php [[email protecte

springboot使用mybatis實現一對一,一對多查詢

繁重的mybatis配置經常讓人頭痛,今天總結一下簡單地使用mybatis 先建好表 CREATE TABLE IF NOT EXISTS `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nick_name` varchar(50)

java多執行緒的三種實現方式的範例

java提供了三種多執行緒的實現方式,分別為:繼承Thread類、實現Runnable介面 和 實現Callable<>介面。 繼承Thread類 執行緒的執行體是run()方法,所以我們只需要過載父類的run()方法。建立類物件,呼叫start()

ApolloStudio高手之路(6):用Python以方式讀寫OPC DA、OPC UA資料並實現UI控制元件自動繫結重新整理顯示

OPC(OLE for Process Control, 用於過程控制的OLE)是一個工業標準,OPC是為了連線資料來源(OPC伺服器)和資料的使用者(OPC應用程式)之間的軟體介面標準。資料來源可以是PLC,DCS,條形碼讀取器等控制裝置。隨控制系統構成的不同,作為資料來源的OPC伺服器既可以

UI框架實現

原理:通過定義“棧”集合,維護一個後進先出的UI佇列,實現極簡的UI控制管理 概念1:反向切換(先關閉後開啟的UI) 概念2: public class UIManagerData : DataInst<UIManagerData> { //定義“棧”集合,

從程式設計實現角度學習Faster R-CNN(附實現

https://www.jianshu.com/p/9da1f0756813 從程式設計實現角度學習Faster R-CNN(附極簡實現)   GoDeep 關注 2018.03.11 15:51* 字數 5820 閱讀 1897評論 2

超讚幫你打造風APP UI 的實用設計技巧

隨著使用者對UI的喜好開始偏向簡約,設計師有必要將整個UI簡化剝離至基本狀態,因為保留關鍵元素才是成功的鑰匙。從某種意義上說,極簡主義的設計是形式和功能的完美結合。它最大的優勢在於形式上的清晰直觀——簡潔的線條,大量的留白,優雅簡約的圖形元素,賦予整個設計以簡約乾淨的感受

用Kotlin實現回撥

前言 在各種開發場景中,回撥都有著廣泛的應用,命名往往是各種Callback和Listener,其中在Android中接觸最早也最常用的可能就是View.OnClickListener了。 mBtn.setOnClickListener(new View.OnClickListener() {

SpringCloud入門|zuul 過濾器修改轉發的url,困擾很久的功能終於實現了 第6講

前情回顧 上一節(第5講),我們講解了zuul的基本配置,如下連結 SpringCloud極簡入門|zuul智慧路由回退、認證、轉發功能(五):https://www.toutiao.com/i6643405381466849800/ 本章知識點很重要!很重要!很重要!,真的很

純JS實現彈出框

前端小白獻醜了,描述下實現思路。 有兩個div組成了彈出框。兩個div的級別是兄弟關係。 其中一個div是為了遮擋後面的內容 第二個div是為了顯示彈出框的實際內容 html部分