小紅帽的容器云平臺(tái)OpenShift嫁接了Docker和Kubernetes的長(zhǎng)處,一躍成為企業(yè)快速開發(fā)、測(cè)試、運(yùn)維為一體的佼佼者,為日常繁雜的大型項(xiàng)目部署、升級(jí)工作打造了一把利器,從而大幅減輕運(yùn)維人員繁重的工作壓力,更為企業(yè)自身實(shí)現(xiàn)Paas、DevOps和MicroService一條龍服務(wù)加上了有力的砝碼。
然而搭建這個(gè)健碩的云平臺(tái)也非易事,百度上搭建容器云的文章比比皆是,但讀者能夠非常順利完成搭建全過程的也為數(shù)不多,因?yàn)楹芏嘞葳迨怯捎谖覀儗?duì)OpenShift在搭建集群過程中的簡(jiǎn)易的報(bào)錯(cuò)信息不理解造成的。
本人搭建了All In One OpenShift環(huán)境后感覺還是比較容易上手的,但All In One的環(huán)境絕對(duì)不能滿足生產(chǎn)環(huán)境的需要,因此集群云平臺(tái)部署也是必須要闖過的一道關(guān)卡,在此我把我的搭建歷程和解決其中遇到的問題技巧一并寫下來。
相信讀者順著我的思路可以100%完成集群云平臺(tái)的部署,而不會(huì)再遇到那些巨坑和天坑了,這里的“天坑”才是本文的重點(diǎn),我來分享我是怎么解決的!雖然用了2天的時(shí)間排疑,但成就感就是填平了天坑,讓讀者可以安全通過。好了大家來看我的集群部署歷險(xiǎn)記吧!
由于之前我用了Ubuntu系統(tǒng)部署了All In One環(huán)境的OpenShift云平臺(tái),感覺挺簡(jiǎn)單的,過程可以參考百度的OpenShift云平臺(tái)All In One搭建的文章,這里就不再贅述。因此順理成章我想也可以完成Ubuntu系統(tǒng)的OpenShift集群部署啊!
二話沒說,我首先先完成一個(gè)干凈的Ubuntu環(huán)境,并以此為模板設(shè)置了3臺(tái)虛擬機(jī),在參考了百度其他文章后發(fā)現(xiàn)基本都是通過Ansible管理工具搭建的,小紅帽為OpenShift集群部署提供了Ansible的Playbook腳本如下圖所示:
利用這些成熟的腳本,按照官方的講法,我們可以一鍵完成部署,這里就是第一個(gè)坑,官方并沒有說明是否對(duì)Ubuntu系統(tǒng)兼容,當(dāng)我在運(yùn)行時(shí)發(fā)現(xiàn),腳本對(duì)Centos系統(tǒng)依賴度非常高,用到了SELINUX,美國(guó)國(guó)家安全局對(duì)于強(qiáng)制訪問控制的安全策略配置,而Ubuntu系統(tǒng)沒有嵌入SELINUX,所以直接就被判死刑了。
當(dāng)然我并不甘心,強(qiáng)行在Ubuntu系統(tǒng)中安裝了SELINUX,但后續(xù)的部署Playbook腳本中仍遇到了各種與Centos系統(tǒng)綁定的軟件。俗話說強(qiáng)扭的瓜不甜,如果繼續(xù)這樣在Ubuntu系統(tǒng)來部署Playbook,我必將心力交瘁。審時(shí)度勢(shì),我依然投入了Centos的懷抱,但天坑已經(jīng)在不遠(yuǎn)處等著我了,此時(shí)我還不知道……
看一下我的部署手札吧!
第一步:先安裝Centos7.7系統(tǒng),為了方便,同時(shí)為系統(tǒng)安裝了gnome圖形化界面,并為Centos系統(tǒng)配置了管理員權(quán)限。并根據(jù)官方的提示更新了操作系統(tǒng)組件,讀者可以通過如下命令安裝:
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
第二步:在執(zhí)行playbook部署中會(huì)通過一些端口完成部署工作,因此我們事先打開這些端口就非常重要了,當(dāng)然讀者嫌麻煩可以先把防火墻iptables關(guān)閉掉,但生產(chǎn)環(huán)境就不建議了,關(guān)閉iptables命令很簡(jiǎn)單,可以通過:
# 停止防火墻service iptables stop
# 永久關(guān)閉防火墻chkconfig iptables off來完成。
我個(gè)人建議通過下面的命令打開如下端口:
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
當(dāng)看到[ok]字樣則代表端口打開命令已保存到iptable配置文件了,如下圖:
然后再通過命令cat /etc/sysconfig/iptables查看打開的端口情況,如下圖所示:
好了,小伙伴們?cè)凇度萜髟破脚_(tái)OpenShift3.11集群部署歷險(xiǎn)記(中)》里繼續(xù)看我怎么填平一路的坑和最后的天坑吧!