小紅帽的容器云平臺OpenShift嫁接了Docker和Kubernetes的長處,一躍成為企業快速開發、測試、運維為一體的佼佼者,為日常繁雜的大型項目部署、升級工作打造了一把利器,從而大幅減輕運維人員繁重的工作壓力,更為企業自身實現Paas、DevOps和MicroService一條龍服務加上了有力的砝碼。
然而搭建這個健碩的云平臺也非易事,百度上搭建容器云的文章比比皆是,但讀者能夠非常順利完成搭建全過程的也為數不多,因為很多陷阱是由于我們對OpenShift在搭建集群過程中的簡易的報錯信息不理解造成的。
本人搭建了All In One OpenShift環境后感覺還是比較容易上手的,但All In One的環境絕對不能滿足生產環境的需要,因此集群云平臺部署也是必須要闖過的一道關卡,在此我把我的搭建歷程和解決其中遇到的問題技巧一并寫下來。
相信讀者順著我的思路可以100%完成集群云平臺的部署,而不會再遇到那些巨坑和天坑了,這里的“天坑”才是本文的重點,我來分享我是怎么解決的!雖然用了2天的時間排疑,但成就感就是填平了天坑,讓讀者可以安全通過。好了大家來看我的集群部署歷險記吧!
由于之前我用了Ubuntu系統部署了All In One環境的OpenShift云平臺,感覺挺簡單的,過程可以參考百度的OpenShift云平臺All In One搭建的文章,這里就不再贅述。因此順理成章我想也可以完成Ubuntu系統的OpenShift集群部署啊!
二話沒說,我首先先完成一個干凈的Ubuntu環境,并以此為模板設置了3臺虛擬機,在參考了百度其他文章后發現基本都是通過Ansible管理工具搭建的,小紅帽為OpenShift集群部署提供了Ansible的Playbook腳本如下圖所示:
利用這些成熟的腳本,按照官方的講法,我們可以一鍵完成部署,這里就是第一個坑,官方并沒有說明是否對Ubuntu系統兼容,當我在運行時發現,腳本對Centos系統依賴度非常高,用到了SELINUX,美國國家安全局對于強制訪問控制的安全策略配置,而Ubuntu系統沒有嵌入SELINUX,所以直接就被判死刑了。
當然我并不甘心,強行在Ubuntu系統中安裝了SELINUX,但后續的部署Playbook腳本中仍遇到了各種與Centos系統綁定的軟件。俗話說強扭的瓜不甜,如果繼續這樣在Ubuntu系統來部署Playbook,我必將心力交瘁。審時度勢,我依然投入了Centos的懷抱,但天坑已經在不遠處等著我了,此時我還不知道……
看一下我的部署手札吧!
第一步:先安裝Centos7.7系統,為了方便,同時為系統安裝了gnome圖形化界面,并為Centos系統配置了管理員權限。并根據官方的提示更新了操作系統組件,讀者可以通過如下命令安裝:
yum update -y
yum install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct device-mapper-persistent-data lvm2
第二步:在執行playbook部署中會通過一些端口完成部署工作,因此我們事先打開這些端口就非常重要了,當然讀者嫌麻煩可以先把防火墻iptables關閉掉,但生產環境就不建議了,關閉iptables命令很簡單,可以通過:
# 停止防火墻service iptables stop
# 永久關閉防火墻chkconfig iptables off來完成。
我個人建議通過下面的命令打開如下端口:
iptables -I INPUT -p udp --dport 4789 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 53 -j ACCEPT &&
iptables -I INPUT -p udp --dport 53 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 8053 -j ACCEPT &&
iptables -I INPUT -p udp --dport 8053 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 443 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 8443 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 10250 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 10010 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 2049 -j ACCEPT &&
iptables -I INPUT -p udp --dport 2049 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 2379 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 2380 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 9000 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 8444 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 9200 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 9300 -j ACCEPT &&
iptables -I INPUT -p tcp --dport 1936 -j ACCEPT &&
service iptables save
當看到[ok]字樣則代表端口打開命令已保存到iptable配置文件了,如下圖:
然后再通過命令cat /etc/sysconfig/iptables查看打開的端口情況,如下圖所示:
好了,小伙伴們在《容器云平臺OpenShift3.11集群部署歷險記(中)》里繼續看我怎么填平一路的坑和最后的天坑吧!