一、緣起
????????一直用Rancher 1.x做私有云Docker管理,但一直沒(méi)用Kubernets做持久交付,主要是覺(jué)得Kubernetes手工搭建好煩(純粹主觀(guān)感受,主要是要翻墻你懂的)。試了幾種容器化安裝Kubernetes的方案,但也都不是很滿(mǎn)意,在去年底試了一下Rancher的RKE工具,但kubelet worker安裝總是失敗,就想著是不是測(cè)試版不完善,后來(lái)就暫時(shí)擱下了。今年Rancher 2.0終于發(fā)布了,第一時(shí)間試用了一下,一如既往地簡(jiǎn)便,而且確實(shí)完全轉(zhuǎn)向kubernetes了。但是很不幸我還是遇到了kubelet worker安裝失敗的問(wèn)題,看Rancher官方論壇帖子也不多,不是很景氣的樣子,估計(jì)2.0剛出來(lái),用的人不多,于是發(fā)了個(gè)求助,但回答沒(méi)解決我的問(wèn)題,一度又想放棄。
二、見(jiàn)到曙光
? ? ? ? 就在我準(zhǔn)備放棄之時(shí),我打開(kāi)了1.6的管理界面,想著1.6 總歸成熟可用,決定試一下,這次多加了幾臺(tái)虛擬機(jī)做worker node,幸運(yùn)的是新加的居然成功了,原來(lái)失敗的那臺(tái)還是碰到kubelet worker docker不停重啟失敗問(wèn)題。沒(méi)有對(duì)比就沒(méi)有傷害,仔細(xì)檢查問(wèn)題節(jié)點(diǎn)的docker logs輸出,原來(lái)問(wèn)題出在主機(jī)名的DNS設(shè)置上,出問(wèn)題的主機(jī)上/etc/hosts里面主機(jī)IP地址解析加了私有域名后綴,但DNS服務(wù)器內(nèi)沒(méi)有該完整域名對(duì)應(yīng)解析,真是低級(jí)錯(cuò)誤。干脆刪掉/etc/hosts里面域名解析條目后,一切都正常了,Kubernetes集群簡(jiǎn)簡(jiǎn)單單就起來(lái)了,非常方便。接下來(lái)趁熱打鐵試了下Rancher 2.0的搭建,也成功了。
下面記錄一下分別在Rancher1.x 和2.0平臺(tái)完整建立Kubernetes集群的步驟
三、Rancher1.6建立Kubernetes集群
準(zhǔn)備環(huán)境:
Rancher服務(wù)器,用于部署,可以單獨(dú)也可以混用。
虛擬機(jī)或裸機(jī)3臺(tái),用于kubernetes集群K8s主機(jī),安裝Ubuntu 16.04 ,Docker。
1、主機(jī)Ubuntu設(shè)置
? ? Ubuntu設(shè)置相對(duì)Redhat要方便點(diǎn)。
? ? 注意點(diǎn):設(shè)置不同主機(jī)名,/etc/hosts可以不管,因?yàn)椴挥胊nsible不涉及無(wú)密碼直接互相ssh的問(wèn)題。
? ? 1.1禁用SWAP:
???????直接修改/etc/fstab文件,注釋掉swap項(xiàng)。swapoff -a 只是臨時(shí)禁用,下次關(guān)機(jī)重啟又恢復(fù)原樣;
? ? 1.2啟用Cgroup:
????????修改配置文件/etc/default/grub,啟用cgroup內(nèi)存限額功能,配置兩個(gè)參數(shù):
? ? ? ? ? ? GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
????????????GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
? ? ? ? 執(zhí)行sudo update-grub 更新grub,然后重啟系統(tǒng)后生效。
? ? 1.3 安裝docker
? ? ? ? #apt install docker.io
????????官方穩(wěn)定版1.13.1即可 。
2、Rancher 設(shè)置
? ? Rancher 1.6 先要新建一個(gè)Kubernetes環(huán)境,然后切換到kubernetes環(huán)境,加入Host,生成docker run命令,搭建集群。Kubernetes Master 和node 在Rancher可以自由搭配,通過(guò)不同Host加入不同標(biāo)簽指派不同角色。
? ? 2.1?Orchestration Plane編排平面
? ? ? ? 對(duì)應(yīng)master節(jié)點(diǎn),加入orchestration=true和?etcd=true標(biāo)簽(etcd主機(jī)最好3臺(tái)以上2n+1臺(tái),Data Plane 數(shù)據(jù)平面存放集群配置數(shù)據(jù)),編排主機(jī)建議2臺(tái)(高可用)。
? ? 2.2?Compute Plane計(jì)算平面
? ? ? ? 對(duì)應(yīng)node節(jié)點(diǎn),worker node ,加入compute=true標(biāo)簽即可????
? ? 根據(jù)自己的主機(jī)數(shù)量,規(guī)劃好節(jié)點(diǎn)類(lèi)型,在每臺(tái)主機(jī)上運(yùn)行對(duì)應(yīng)的docker run 命令后,回到Host主機(jī)管理界面,看每臺(tái)主機(jī)上docker運(yùn)行情況,不正常的話(huà)查看logs。然后通過(guò)Kubernetes GUI管理/查看集群。
四、Rancher 2.0
? ? Rancher 2.0已經(jīng)正式發(fā)布,全面轉(zhuǎn)向Kubernetes,目前不兼容1.6平滑升級(jí)。
1、準(zhǔn)備好Rancher部署服務(wù)器(#docker run -d -p 8008:80 -p 8443:443 --name rancher2 --restart=unless-stopped rancher/rancher)和K8s主機(jī)同上。
2、第一次進(jìn)入Rancher管理界面,會(huì)要求設(shè)置admin口令,新建集群,類(lèi)型選Custom,建本地私有云集群,按節(jié)點(diǎn)角色自由搭配Control,Etcd,Worker,K8s主機(jī)上分別運(yùn)行生成的Docker run命令,保存后退出,看集群構(gòu)建的Logs輸出提示是否都Active,集群就起來(lái)了。
2.0里面看不到1.6那種Docker ps運(yùn)行的細(xì)節(jié)了,細(xì)節(jié)隱藏得比較深,kubernetes不直接展示docker,可通過(guò)提供的Kubectl窗口進(jìn)行查看,有問(wèn)題需要自己看不同K8s上Docker logs 輸出。
總之,用Rancher 容器化部署一套完整的本地私有云Kubernetes集群真的很方便。