coreos 探索之旅 二 Matchbox

上次完成單機(jī)显沈,這部分完成ipxe安裝

考慮到coreos的運(yùn)用環(huán)境,ipxe安裝估計(jì)是工作的主要方式。

coreos也提供了專業(yè)化 工具matchbox ,官網(wǎng)有詳細(xì)介紹拉讯。

一涤浇、 準(zhǔn)備

coreos已經(jīng)投了redhat懷抱, 官網(wǎng)估計(jì)目前也在改了吧魔慷,上面一直提示:這些文檔在遷移到Red Hat時(shí)不推薦使用只锭。有關(guān)最新的文檔,請(qǐng)參見相應(yīng)的GitHub存儲(chǔ)庫院尔。
先把matchbox 代碼下回來蜻展, 不要去下它發(fā)行的打包版本,里面少了很多源碼里的案例邀摆、腳本,這些對(duì)于理解都很重要W莨恕!

git clone https://github.com/poseidon/matchbox.git

進(jìn)入matchbox目錄下栋盹,先去下載鏡像施逾,執(zhí)行

./scripts/get-coreos stable 2303.3.0 ./examples/assets/

我指定了一個(gè)最新的版本, 這個(gè)決定也為后面埋滿了坑例获。
默認(rèn)他是用的1967.3.0汉额,坑主要是在它后面提供的example里面的配置都是1967.3.0, 害的我好一陣改闷愤, 好處是踩坑多,明白的也多件余。

一次性的都拿下讥脐,查看一下
CoreOS_Image_Signing_Key.asc       
coreos_production_pxe_image.cpio.gz.sig
coreos_production_image.bin.bz2      
coreos_production_pxe.vmlinuz
coreos_production_image.bin.bz2.sig  
coreos_production_pxe.vmlinuz.sig
coreos_production_pxe_image.cpio.gz  
version.txt

這次他會(huì)按版本號(hào)自動(dòng)給你建一個(gè)子目錄,如果你虛擬機(jī)空間夠大损谦,多準(zhǔn)備一個(gè)版本的估計(jì)會(huì)方便一點(diǎn)岖免。

二、啟動(dòng)ipxe

matchbox的example已經(jīng)裝備了好幾套配置照捡,供你運(yùn)行颅湘,為了更簡(jiǎn)單易一點(diǎn), 我采用了docker的方式來完成ipxe環(huán)境和配置栗精。
docker的環(huán)境準(zhǔn)備好就不多說了闯参,

我們先跟隨matchbox的案例看看這里面做了什么瞻鹏,
matchbox目錄下的example/groups 中提供了下面幾個(gè)案例,我們就用etc3-install 吧鹿寨,

bootkube  bootkube-install  etcd3  etcd3-install  grub  simple  simple-install

devnet會(huì)創(chuàng)建dnsmasq新博,matchbox兩個(gè)容器, 打開devnet 腳本看一看脚草,基本上就是根據(jù)你的參數(shù)去為docker -v加載不同的配置目錄赫悄。

./scripts/devnet create etcd3-install
# 下面是腳本里-v mount目錄的看得比較清楚,etcd3-install 就是$EXAMPLE
# DATA_MOUNT="-v $PWD/examples:/var/lib/matchbox:Z -v $DIR/../examples/groups/$EXAMPLE:/var/lib/matchbox/groups

啟動(dòng)之后還可以用./scripts/devnet status 查看一下馏慨,因?yàn)槟阋膊恢罆?huì)被dhcp分配到什么地址涩蜘,所以./scripts/devnet status可以幫你查看一下,
總之devnet就是幫你啟動(dòng)了兩個(gè)docker,其中dnsmasq完成 DHCP, DNS 熏纯,TFTP同诫,matchbox負(fù)責(zé)提供配置。

quay.io/poseidon/dnsmasq:   "/usr/sbin/dnsmasq -d"       53/tcp, 67/tcp, 69/tcp             dnsmasq
 quay.io/poseidon/matchbox:latest     "/matchbox -address=…" 0.0.0.0:8080-8081->8080-8081/tcp   matchbox

二樟澜、安裝etcd3-install
sudo ./scripts/libvirt create

此腳本會(huì)一次創(chuàng)建3個(gè)node误窖,第一次我就掛了, 因?yàn)槲蚁碌?303.3.0版本鏡像秩贰,但是這個(gè)些example都是用的是1967.3.0霹俺,去example目錄下, 把自己用的配置都改為新版2303.3.0 ,這個(gè)翻翻example下的配置比較容易毒费。

還有重要的丙唧,這些節(jié)點(diǎn)配置里用的ssh_authorized_keys 可能都跟你沒啥關(guān)系,把自己的id_rsa.pub 換上去(見第一章)
matchbox/examples/groups/etcd3-install/node1,2,3.json

{
  "id": "node1",
  "name": "etcd Node 1",
  "profile": "etcd3",
  "selector": {
    "mac": "52:54:00:a1:9c:ae",
    "os": "installed"
  },
  "metadata": {
    "domain_name": "node1.example.com",
    "ssh_authorized_keys": ["ssh-rsa 換掉...... "],
    "etcd_name": "nodc1",
    "etcd_initial_cluster": "node1=http://node1.example.com:2380,node2=http://node2.example.com
:2380,node3=http://node3.example.com:2380"
  }

一陣暗箱操作后你可以用下面登錄
ssh core@node1.example.com
這里需要理解的是這個(gè)node1.example.com 是在配置中產(chǎn)生 觅玻, 被dnsmasq解析和對(duì)應(yīng)ip的想际,你可以在./scripts/devnet status 中看到輸出記錄,你也可以執(zhí)行arp 溪厘, 可以看到node1.example.com 與mac的對(duì)應(yīng)表胡本,

nodc3.example.com        ether   52:54:00:c3:61:77   C                     docker0
nodc2.example.com        ether   52:54:00:b2:2f:86   C                     docker0
nodc1.example.com        ether   52:54:00:a1:9c:ae   C                     docker0

關(guān)于這個(gè)mac地址,是藏在中間異常重要的一個(gè)耦合因素畸悬。
重點(diǎn): 如果你去仔細(xì)看node1.json的配置侧甫,你就會(huì)發(fā)現(xiàn),mac 是被一個(gè)叫selector的元素包含的蹋宦,分析一下不難明白披粟, 當(dāng)你用kvm生成一個(gè)虛擬機(jī)時(shí),可以先指定這個(gè)mac地址的冷冗,為什么要這么干呢守屉?因?yàn)閙atchbox可以根據(jù)這個(gè)mac對(duì)機(jī)器做具體的配置做匹配, 可以設(shè)想當(dāng)你安裝一批集群時(shí)贾惦,有一些是普通節(jié)點(diǎn)胸梆, 有一些必然是有特殊角色敦捧,批量部署時(shí)须板,怎么讓不同的節(jié)點(diǎn)執(zhí)行不同的配置安裝呢碰镜, 那么mac值就是用來控制的, 也就不難理解习瑰,配置里面有的有default.json,是為了普通節(jié)點(diǎn)準(zhǔn)備的绪颖。

順利的話,ssh core@node1.example.com 就可以用了甜奄,

以下指令清除了docker 容器柠横,也清除了3個(gè)虛擬機(jī),干干凈凈毛都不剩课兄。
$ sudo ./scripts/devnet destroy
$ sudo ./scripts/libvirt destroy

是不是覺得比第一篇還簡(jiǎn)單點(diǎn)牍氛。
不過一般都會(huì)碰到一些問題,下面是一些雜七雜八的話題

三烟阐、 其他一些問題
1搬俊,拋開他的案例我們?cè)趺椽?dú)立執(zhí)行,

看看腳本里最后生成虛擬機(jī)的部分, 主要是影響的是節(jié)點(diǎn)名稱蜒茄,網(wǎng)絡(luò)唉擂,mac,

virt-install 
  --name $NODE1_NAME 
  --network=bridge:docker0,mac=$NODE1_MAC 
  --memory=${VM_MEMORY} 
  --vcpus=1 
  --disk pool=default,size=${VM_DISK} 
  --os-type=linux 
  --os-variant=generic 
  --noautoconsole 
  --events on_poweroff=preserve 
  --boot=hd,network 

在改動(dòng)一下第一篇中kvm的xml定義

<domain type='kvm'>
        <name>coreos1</name>
        <memory>2048576</memory>
        <currentMemory>2048576</currentMemory>
        <vcpu>2</vcpu>
        <os>
          <type arch='x86_64' machine='pc'>hvm</type>
          <boot dev='network'/>
              <!-- <boot dev='hd'/>  -->
              <!-- matchbox &docker ipex安裝用 network  -->
       </os>
       <features>
         <acpi/>
         <apic/>
         <pae/>
       </features>
       <clock offset='localtime'/>
       <on_poweroff>destroy</on_poweroff>
       <on_reboot>restart</on_reboot>
       <on_crash>destroy</on_crash>
       <devices>
         <emulator>/usr/libexec/qemu-kvm</emulator>
         <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
           <source file='/opt/kvmdisk/core1.img'/>
           <target dev='hda' bus='ide'/>
         </disk>
        <interface type='bridge'>
          <source bridge='docker0'/>
          <mac address="00:16:3e:5d:aa:a8"/>
        </interface>
         <input type='mouse' bus='ps2'/>
         <graphics type='vnc' port='5901' autoport='no' listen = '0.0.0.0' keymap='en-us'/>
       </devices>
</domain>

這里加了一個(gè)vnc檀葛,可以遠(yuǎn)程登上去看看執(zhí)行的過程玩祟, 特別是開始時(shí)候番宁,排查問題的時(shí)候搓彻,

2 關(guān)于matchbox 的文件結(jié)構(gòu)

理解的關(guān)鍵三個(gè)目錄
examples/groups 子目錄中配置虛擬機(jī)硬件的信息,文件中引用了profiles中的配置
examples/profiles 配置啟動(dòng)引導(dǎo)的配置文件赔嚎,啟動(dòng)后加載ignition中的配置
examples/ignition 這個(gè)是負(fù)責(zé)系統(tǒng)配置润讥,安裝etcd3,網(wǎng)絡(luò)等等
耐心翻翻他的配置很有好處

3, 官方文檔 里提到的/etc/hosts
# /etc/hosts
...
172.17.0.21 node1.example.com
172.17.0.22 node2.example.com
172.17.0.23 node3.example.com

除非安裝完成勺卢,提前是沒法知道具體分配ip的, 所以象对,我是認(rèn)為這是官網(wǎng)沒講明白的地方黑忱, 啟動(dòng)之后進(jìn)入系統(tǒng)之后可以自己手動(dòng)給加上hosts。

3,matchbox 其他方式

docker不是唯一方式勒魔, 也可以直接部署甫煞,我只是覺得方便,官網(wǎng)有介紹冠绢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末抚吠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子弟胀,更是在濱河造成了極大的恐慌楷力,老刑警劉巖喊式,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異萧朝,居然都是意外死亡岔留,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門检柬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來献联,“玉大人,你說我怎么就攤上這事何址±锬妫” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵用爪,是天一觀的道長原押。 經(jīng)常有香客問我,道長偎血,這世上最難降的妖魔是什么诸衔? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮烁巫,結(jié)果婚禮上署隘,老公的妹妹穿的比我還像新娘。我一直安慰自己亚隙,他們只是感情好磁餐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阿弃,像睡著了一般诊霹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渣淳,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天脾还,我揣著相機(jī)與錄音,去河邊找鬼入愧。 笑死鄙漏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棺蛛。 我是一名探鬼主播怔蚌,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旁赊!你這毒婦竟也來了桦踊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤终畅,失蹤者是張志新(化名)和其女友劉穎籍胯,沒想到半個(gè)月后竟闪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杖狼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年炼蛤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片本刽。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鲸湃,死狀恐怖赠涮,靈堂內(nèi)的尸體忽然破棺而出子寓,到底是詐尸還是另有隱情,我是刑警寧澤笋除,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布斜友,位于F島的核電站,受9級(jí)特大地震影響垃它,放射性物質(zhì)發(fā)生泄漏鲜屏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一国拇、第九天 我趴在偏房一處隱蔽的房頂上張望洛史。 院中可真熱鬧,春花似錦酱吝、人聲如沸也殖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忆嗜。三九已至,卻和暖如春崎岂,著一層夾襖步出監(jiān)牢的瞬間捆毫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工冲甘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绩卤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓江醇,卻偏偏與公主長得像濒憋,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嫁审,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容