1.選擇原因
在K8s選型的時(shí)候?qū)Ρ冗^(guò) KubeOperator,OpenShift,Rancher,裸金屬等
- 裸金屬 搭建比較費(fèi)勁,維護(hù)比較費(fèi)勁
- OpenShift 比較重
- KubeOperator 給百度交了廣告費(fèi) ,感覺不靠譜 (不喜勿噴,就這么隨意)
- Rancher 安裝和使用很簡(jiǎn)單
讓我這半吊子運(yùn)維覺得安裝和使用都很簡(jiǎn)單,我很難拒絕這一部分,就選擇它了。
2. Rancher介紹
Run Kubernetes Everywhere
From datacenter to cloud to edge, Rancher lets you deliver Kubernetes-as-a-Service.
有興趣可以去官網(wǎng)看看介紹,我懶得復(fù)制粘貼了。
3. 安裝Rancher2.0
這是一臺(tái)K8s集群管理機(jī)器,建議找一臺(tái)不要加入集群的機(jī)器,當(dāng)然你也可以不采納我的建議,這臺(tái)機(jī)器配置無(wú)需太高,推薦4C8G的機(jī)器,條件不允許的話也可以更低
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
對(duì)的,你沒看錯(cuò),就這么一句話。
等這個(gè)運(yùn)行好了就直接進(jìn)入 https://NodeIP 就可以安裝指引配置管理員賬號(hào)和密碼啥的。
這里要注意的就是在填寫IP的時(shí)候一定要填寫正確
4.構(gòu)建K8s集群

你可以導(dǎo)入一個(gè)已有的集群,也可以創(chuàng)建下面的任意托管集群,或者自定義集群,這里我是自己的機(jī)器所以選的自定義。

你也可以看著下面的參數(shù)去進(jìn)行配置,沒啥需要注意的按照中文走就完事了。

這里的高級(jí)選項(xiàng)的話授權(quán)集群訪問地址選擇禁用,你可以按照你的需要去勾選。端口地址這里不建議修改,因?yàn)橐_防火墻的端口,搞起來(lái)比較麻煩。
我這里這里填寫一個(gè)名字就完事了,然后點(diǎn)擊下一步。

注意:這里的高級(jí)選項(xiàng)要點(diǎn)開,去配置內(nèi)網(wǎng)地址和節(jié)點(diǎn)名稱,不然會(huì)出現(xiàn)稀奇古怪的問題
這里有三個(gè)主機(jī)角色 Etcd,Control,Worker
Etcd 是負(fù)責(zé)存儲(chǔ)的
Control 是控制器
Worker 是工作節(jié)點(diǎn)
這里Rancher官網(wǎng)的HA部署建議是任意一臺(tái)加入集群的機(jī)器都勾選三個(gè)角色,但是我不接受他的建議
裸金屬搭建K8s的經(jīng)驗(yàn)告訴我,Master就是Etcd,Control,Node就是Worker 所以我選擇 Etcd,Control放在一起,Worker單獨(dú)放。我這里這里小集群的話Etcd和Control放在一臺(tái)機(jī)器上面。建議將穩(wěn)定性高的機(jī)器做為Master因?yàn)檫@臺(tái)機(jī)器只要求穩(wěn)定性,Pod調(diào)度默認(rèn)也不會(huì)調(diào)度到這臺(tái)機(jī)器上,對(duì)性能要求沒有Worker高。有錢的話忽略這一段。
注意:在將機(jī)器加入集群之前先將端口號(hào)開放才行,不然集群不會(huì)正常運(yùn)行
Rancher-Server(也就是你裝Rancher那臺(tái)機(jī)器)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
# 如果你的22沒有開放的話也是需要開放的
# firewall-cmd --zone=public --add-port=22/tcp --permanent
Etcd
firewall-cmd --zone=public --add-port=2079-2380/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent #注意這里是udp的
firewall-cmd --reload
Control
firewall-cmd --zone=public --add-port=2079-2380/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent #注意這里是udp的
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent
firewall-cmd --reload
Worker
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=30000-49999/tcp --permanent
firewall-cmd --zone=public --add-port=9099/tcp --permanent
firewall-cmd --zone=public --add-port=10254/tcp --permanent
firewall-cmd --zone=public --add-port=19796/tcp --permanent
firewall-cmd --zone=public --add-port=9796/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --zone=public --add-port=6783-6784/udp --permanent
firewall-cmd --zone=public --add-port=2376/tcp --permanent
firewall-cmd --zone=public --add-port=2379-2380/tcp --permanent
firewall-cmd --zone=public --add-port=6783/tcp --permanent
firewall-cmd --zone=public --add-masquerade --permanent # 沒有這個(gè)內(nèi)部會(huì)無(wú)法通信
firewall-cmd --reload
端口開放后再執(zhí)行加入命令就完事了
這里要注意先加入Master再加入Worker(雖然不知道是為啥,但是反正就是要這樣做)。

執(zhí)行完畢后應(yīng)該會(huì)啟動(dòng)一個(gè)代理的鏡像

這個(gè)鏡像等下集群?jiǎn)?dòng)起來(lái)后會(huì)自動(dòng)刪除的,不用在意。如果你想查看進(jìn)度就可以執(zhí)行下面的代碼查看日志
$ docker logs 314ee0d78cdb

全部機(jī)器執(zhí)行完畢后就等就好了,這個(gè)鏡像有一個(gè)多G,慢慢等吧。
等機(jī)器的機(jī)器起來(lái)后就應(yīng)該可以看到這樣的界面

然后你的Rancher集群就搭建完畢了。