讓我們向天坑發(fā)起沖刺吧!
當(dāng)你在為前面幾步0個(gè)failed沾沾自喜的時(shí)候,天坑降臨了,在執(zhí)行/openshift-ansible-release-3.11/playbooks/openshift-master/config.yml腳本時(shí),一直會(huì)卡在這步:
Wait for all control plane pods to come up and become ready,腳本不斷的在等待openshift的pod容器的相應(yīng),經(jīng)過漫長(zhǎng)的等待,終于跳出了天坑的錯(cuò)誤提示信息:
failed: [master01.okd.com] (item=etcd) => {"ansible_loop_var": "item", "attempts": 72, "changed": false, "item": "etcd", "msg": {"cmd": "/sr/bin/oc get pod master-etcd-master01.okd.com -o json -n kube-system", "results": [{}], "returncode": 1, "stderr": "The connection to the server master01.okd.com:8443 was refused - did you specify the right host or port? ", "stdout": ""}}
當(dāng)然腳本還會(huì)繼續(xù)嘗試等待響應(yīng),3次失敗后,宣告部署失敗,明晃晃的一個(gè)failed出現(xiàn)在master01.okd.com主機(jī)上,但不可思議的是報(bào)錯(cuò)信息是8443端口拒絕,我們明明在之前已經(jīng)開放了8443端口呀,怎么會(huì)8443端口拒絕響應(yīng)呢?我頓時(shí)傻眼了,為了驗(yàn)證,我用curl master01.okd.com:8443請(qǐng)求,結(jié)果就是8443 refused,我用同樣的方法測(cè)試curl master01.okd.com:22請(qǐng)求,很快主機(jī)上的ssh就回復(fù)了。
很多小伙伴到這里不堪忍受就放棄了,而上面這個(gè)錯(cuò)誤我在國(guó)內(nèi)和國(guó)外的貼吧里找了一遍也沒有正確的解決方法。經(jīng)過2天的思考,忽然我靈光乍現(xiàn),一個(gè)念頭出現(xiàn)了:是不是因?yàn)?443端口上根本就沒有程序在執(zhí)行,而不是端口沒有開放而造成的refused呢?
我用命令cat /etc/sysconfig/iptables看了一下,發(fā)現(xiàn)openshfit安裝到目前的地步,只占用了8444端口,而8443端口處于待命閑置狀態(tài)。那是不是我的docker準(zhǔn)備安裝的鏡像缺失造成playbook沒有運(yùn)行這個(gè)缺失的鏡像在8443端口上待命呢?
想到這里,我不斷的在網(wǎng)上驗(yàn)證我的想法,終于在國(guó)外一個(gè)不起眼的貼吧里找到了openshift3.11集群部署需要的docker鏡像清單,我比對(duì)了一下,發(fā)現(xiàn)缺失了如下這些鏡像:
docker pull docker.io/cockpit/kubernetes:latest
docker pull docker.io/openshift/prometheus-node-exporter:v0.16.0
docker pull quay.io/coreos/kube-rbac-proxy:v0.3.1
docker pull quay.io/openshift/origin-
cluster-monitoring-operator:v3.11
docker pull docker.io/ansibleplaybookbundle/
origin-ansible-service-broker:v3.11
docker pull quay.io/coreos/prometheus-
config-reloader:v0.23.2
docker pull docker.io/openshift/prometheus-
alertmanager:v0.15.2
docker pull docker.io/openshift/prometheus:v2.3.2
docker pull quay.io/coreos/kube-state-
metrics:v1.3.1
docker pull docker.io/openshift/origin-
docker-builder:v3.11
是不是這其中的某個(gè)鏡像沒有而造成8443 refused的問題呢?死馬當(dāng)活馬醫(yī),我抱著試試看的心理,再次在三個(gè)鏡像中安裝了上面這些被我遺漏的鏡像,之后再次來到第十二步集群安裝,來到/openshift-ansible-release-3.11/playbooks/openshift-master/config.yml鬼門關(guān)時(shí),一顆心都是懸著的,過了72次的retries,一個(gè)打臉的報(bào)錯(cuò)又出現(xiàn)了:
failed: [master01.okd.com] (item=etcd) => {"ansible_loop_var": "item", "attempts": 72, "changed": false, "item": "etcd", "msg": {"cmd": "/usr/bin/oc get pod master-etcd-master01.okd.com -o json -n kube-system", "results": [{}], "returncode": 1, "stderr": "The connection to the server master01.okd.com:8443 was refused - did you specify the right host or port? ", "stdout": ""}}
難道還是不對(duì)嗎?一個(gè)master01.okd.com的failed砸了過來,我基本已經(jīng)崩潰了,在心灰意冷的情況下,我想再試2次,不行我就放棄吧!
第二次一樣failed,心情再次跌落到深淵,為了安慰自己便再試最后一次,在第三次執(zhí)行/openshift-ansible-release-3.11/playbooks/openshift-master/config.yml腳本時(shí)我已經(jīng)麻木了……
俗話說得好,“山重水復(fù)疑無路,柳暗花明又一村”。正當(dāng)我面對(duì)天坑打道回府之際,奇跡出現(xiàn)了,我截屏了這一瞬間的時(shí)刻,大家看下圖:
在master01.okd.com上終于部署成功了,我經(jīng)歷了3個(gè)70多次的retries后終于看到了勝利的曙光:
后面就一帆風(fēng)順了,全部腳本執(zhí)行完成后我執(zhí)行oc get nodes查看集群node運(yùn)行情況:
并執(zhí)行oc get pods --all-namespaces查看pod的running狀態(tài):
在node01.okd.com和node02.okd.com上執(zhí)行docker ps查看集群運(yùn)行的情況:
三臺(tái)機(jī)器已經(jīng)協(xié)同運(yùn)行了!
我在master01.okd.com主機(jī)上創(chuàng)建了登錄賬戶:
htpasswd -b /etc/origin/master/htpasswd admin admin
oc login -u system:admin
oc adm policy add-cluster-role-to-user cluster-admin admin
最后在windows系統(tǒng)的客戶端的hosts文件設(shè)置了openshift地址并訪問:
C:WindowsSystem32driversetchosts
192.168.122.159 master01.okd.com
192.168.122.158 node01.okd.com
192.168.122.160 node02.okd.com
久違的畫面出現(xiàn)了,至此我們終于成功了!
再回過頭來想想,剛才的天坑是怎么造成的,主要有如下幾點(diǎn):
1.openshift3.11需要的鏡像準(zhǔn)備不全。
2.在虛擬機(jī)環(huán)境下由于資源有限,從而造成一直等到pod響應(yīng),因?yàn)槿萜鲉?dòng)是要時(shí)間的,因此第一次失敗很正常,如果您在真機(jī)上運(yùn)行說不定一次就能通過。但不要緊,后臺(tái)的pod正在啟動(dòng)中,只要playbook檢測(cè)到了就會(huì)通過,在我經(jīng)過3次嘗試后,后臺(tái)的pod終于啟動(dòng)成功了,很多小伙伴就是由于耐不住寂寞,而放棄了,當(dāng)然如果您的鏡像準(zhǔn)備不全的話,嘗試10000次也是天坑的報(bào)錯(cuò)打臉。
至此,我的容器云openshift3.11集群部署歷險(xiǎn)記就寫到這里,希望要安裝容器云的小伙伴可以踩著我的尸體順利完成!