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