緣由
最近在云平臺中架設了三臺節(jié)點的CoreOS集群鸽扁,雖然對于很多云平臺和虛擬化管理平臺鞭执,官方都提供了安裝腳本十办,但由于我所使用的云平臺的一些原因偏化,我無法選擇使用官方的云平臺部署腳本,所以本次紀錄抡秆,是紀錄直接在虛擬機中安裝CoreOS的過程奕巍,理論上安裝步驟適用于裸機安裝。遇到了一些坑琅轧,特此記錄伍绳,希望對初次接觸CoreOS的童鞋有所借鑒和幫助。
步驟 & 坑
第一步 : 下載系統(tǒng)安裝的ISO文件
你可能會覺得這一步很簡單乍桂,但是,我不得不說效床,這個過程我花費了最多的時間睹酌。
由于官方的鏡像下載源被偉大的GFW墻了,所以我無法直接下載這個ISO剩檀!
解決過程:我嘗試使用迅雷下載憋沿,發(fā)現(xiàn)沒速度,于是找同學拿了個某雷的VIP賬號沪猴,把鏡像下載下來了辐啄,速度奇慢
注:目前這個ISO下載地址似乎可以直接訪問了CoreOS ISO
第二步:通過ISO引導采章,進入LiveCD
略
第三步:SSH到LiveCD環(huán)境中
雖然這一步不是必須的,但我覺得壶辜,這一步是必須的悯舟!因為你如果你不SSH到LiveCD中,編寫安裝配置文件config.yaml的時候非常麻煩砸民,比如抵怎,你要添加SSH-Key,你不可能一個一個字符敲進去岭参,所以最好的方法當然是在SSH終端上直接拷貝反惕。
坑:從系統(tǒng)上看來,SSHD服務是開著的演侯,我鏈接了老半天都連不了姿染,排查了很久才發(fā)現(xiàn),在CoreOS中秒际,和其他Linux發(fā)行版不一樣悬赏,它的SSHD的PermitRootLogin
默認是no
的,禁止了Root登陸程癌,所以需要改了舷嗡。
配置SSH的過程
cd /etc/ssh
mv sshd_config{,.bak} #你不能直接編輯,因為這個文件是/usr/share/ssh/ssh_config的軟鏈接嵌莉,而/usr的整個分區(qū)进萄,是只讀的
cat sshd_config.bak > sshd_config
vim sshd_config
#...
PermitRootLogin yes #加入這一句
systemctl restart sshd
sudo passwd root
然后就可以用ssh上去了。
第四步:編寫初始化配置
填寫cloud-config的配置锐峭,在官方有說明中鼠,按照自己的需求來就行,在本次的實驗中沿癞,這一步當然也少不了坑援雇。
按照網(wǎng)上或者官方的教程,你可能會看到類似于下面這樣的例子(我就是用這個的):
#cloud-config
hostname: coreos01
coreos:
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
etcd2:
discovery: https://discovery.etcd.io/cb33f38c16bead3a376be9bfc706987
advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
initial-advertise-peer-urls: http://$private_ipv4:2380
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://$private_ipv4:2380,http://$private_ipv4:7001
fleet:
metadata: role=coreos01
users:
- name: core
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9Q...== KeyExample
- groups:
- sudo
- docker
然而安裝完之后才發(fā)現(xiàn)椎扬,etcd集群是失敗的惫搏。經(jīng)過排查,才發(fā)現(xiàn)etcd偵聽的地址全部都是127.0.0.1
所以我果斷看配置文件cat /run/systemd/system/etcd2.service/20-*
蚕涤,恍然大悟筐赔。
坑:在安裝前配置cloud-config(cloud-config.yaml)的時候,如果要使用$private_ipv4或者其他$public_ipv4之類的變量的時候揖铜,要確保這些變量是存在的(一開始我以為CoreOS自動添加的茴丰,教程都那樣寫),一個方法是,你可以把環(huán)境變量寫到/etc/environment
中贿肩。
第五步:安裝
執(zhí)行安裝命令:
coreos-install -d /dev/sda -c cloud-config.yaml
由于在安裝過程中峦椰,系統(tǒng)會從官方下載更新包,如果如我現(xiàn)在所看到的那樣汰规,官方的鏡像站是可以直接訪問的汤功,那么你的安裝過程可能很順利。然而當時我安裝的時候控轿,鏡像站是訪問不了的冤竹,所以,這個坑茬射,非GFW莫屬鹦蠕。當然解決方法也是很簡單。
坑:由于官方鏡像站點被墻在抛,安裝過程中無法下載更新包钟病。所以:
1、用某雷(VIP)或者翻墻之類的方法下載鏡像
2刚梭、找到安裝過程中需要下載的更新包肠阱,URL路徑可以在安裝腳本中找到,vim /usr/bin/coreos-install
朴读,當然還有一個更好的方式是屹徘,執(zhí)行安裝的時候用sh -x /usr/bin/coreos-install -d /dev/sda -c /cloud-config.yaml
這樣就可以看到安裝的過程中腳本在哪一步停住了,比如我看到的是腳本一直停在下載下面的兩個文件的步驟:
http://stable.release.core-os.net/amd64-usr/899.13.0/coreos_production_image.bin.bz2
和
http://stable.release.core-os.net/amd64-usr/899.13.0/coreos_production_image.bin.bz2.sig
3衅金、用某雷(VIP)或者翻墻把兩個文件下載下來噪伊,自己建立HTTP服務器,然后在里面簡歷一個899.13.0目錄氮唯,并把文件放進去鉴吹,供安裝腳本下載。
4惩琉、執(zhí)行安裝豆励,并指定從自己的http服務器下載更新包
coreos-install -d /dev/sda -c cloud-config.yaml -b http://192.168.1.1
坑:從VPS下載更新包,又傳到內網(wǎng)HTTP服務器上瞒渠,數(shù)據(jù)損壞良蒸,重新下一個,安裝成功 T_T伍玖。
總結
折騰一番之后诚啃,總算安裝成功,有了一個繼續(xù)折騰的平臺私沮。
總體感覺,CoreOS的設計理念是很好的,尤其是集群和精簡這一點仔燕,在搭配CoreOS的幾大重量級應用(fleet造垛、etcd、Rkt等)之后晰搀,相對于傳統(tǒng)的Linux發(fā)行版五辽,在數(shù)據(jù)中心或者微服務架構中,簡直是完爆了外恕,我之后在測試的CoreOS上面開啟docker發(fā)現(xiàn)其運行起來比在CentOS7運行快很多杆逗,不知道是錯覺還是錯覺或者是錯覺...特地也在某云買了一臺虛擬機來玩CoreOS。但是鳞疲!由于CoreOS相對來說還是比較新的東西罪郊,所以在行業(yè)上用得比較少,尤其是國內尚洽,所以學習資料悔橄、系統(tǒng)架構案例和問題疑難解決方案等資料在網(wǎng)絡上都比較少,另一方面腺毫,由于CoreOS大部分時候注重大體架構癣疟,細節(jié)上比較少關注,所以對于用戶而言潮酒,會有很多小坑(體驗頗深)睛挚。