摘要:引言能夠支持,可以快速幾乎無障礙的拉起一套環(huán)境,這對剛?cè)腴T的小白來說簡直是一大利器。本文就分析一下關(guān)于無法訪問問題。檢查一下有問題的節(jié)點(diǎn)的系統(tǒng),果然會發(fā)現(xiàn)安裝了服務(wù)服務(wù)名為。
引言
Rancher能夠支持Kubernetes,可以快速幾乎無障礙的拉起一套K8s環(huán)境,這對剛?cè)腴TK8s的小白來說簡直是一大利器。當(dāng)然由于系統(tǒng)特性五花八門,系統(tǒng)內(nèi)置軟件也相互影響,所以有時(shí)候伙伴們會碰到比較難纏的問題。本文就分析一下關(guān)于kubelet無法訪問rancher-metadata問題。
問題現(xiàn)象使用Rancher部署K8s后,發(fā)現(xiàn)一切服務(wù)狀態(tài)均正常,這時(shí)候打開K8s dashboard卻無法訪問,細(xì)心得查看會發(fā)現(xiàn),dashboard服務(wù)并沒有部署起來,這時(shí)下意識的行為是查看kubelet的日志,此時(shí)會發(fā)現(xiàn)一個(gè)異常:
你會發(fā)現(xiàn)kubelet容器內(nèi)部一直無法訪問rancher-metadata,查看rancher-k8s-package源碼,kubelet服務(wù)啟動之前需要通過訪問rancher-metadata做一些初始化動作,由于訪問不了,便一直處于sleep狀態(tài),也就是出現(xiàn)了上面提到的那些異常日志的現(xiàn)象:
同樣,在github上也能看到類似的issue:https://github.com/rancher/ra...
排查分析進(jìn)入kubelet容器一探究竟,分別用ping和dig測試對rancher-metadata訪問情況如下:
dig明顯可以解析,但是ping無法解析,因此基本排除了容器內(nèi)dns nameserver或者網(wǎng)絡(luò)鏈路情況的問題。
既然dig沒有問題,ping有問題,那么我們就直接采取使用strace(strace ping rancher-metadata -c 1)來調(diào)試,這樣可以打印系統(tǒng)內(nèi)部調(diào)用的情況,可以更深層次找到問題根源:
之前提到這個(gè)問題并不是必現(xiàn)的,所以我們找一個(gè)正常的環(huán)境,同樣用strace調(diào)試,如下:
對這兩張圖,其實(shí)已經(jīng)能夠很明顯的看出區(qū)別,有問題的kubelet在解析rancher-metadata之前,向nscd請求的解析結(jié)果,nscd返回了unkown host,所以就沒有進(jìn)行dns解析。而正常的kubelet節(jié)點(diǎn)并沒有找到nscd.socket,而后直接請求dns進(jìn)行解析rancher-metadata地址。
經(jīng)過以上的分析,基本上斷定問題出在nscd上,那么為什么同樣版本的rancher-k8s,一個(gè)有nscd socket,而另一個(gè)卻沒有,仔細(xì)看一下kubelet的compose定義:
kubelet啟動時(shí)候映射了主機(jī)目錄/var/run,那么基本可以得知nscd來自于系統(tǒng)。檢查一下有問題的kubelet節(jié)點(diǎn)的系統(tǒng),果然會發(fā)現(xiàn)安裝了nscd服務(wù)(服務(wù)名為unscd)。
用比較暴力的方案證明一下分析過程,直接刪除nscd socket文件,這時(shí)候你會發(fā)現(xiàn)kubelet服務(wù)正常啟動了,rancher-metadata也可以訪問了。
回過頭來思考一下原理,為什么ping/curl這種會先去nscd中尋找解析結(jié)果呢,而dig/nslookup則不受影響。ping/curl這種在解析地址前都會先讀取/etc/nsswitch.conf,這是由于其底層均引用了glibc, 由nsswitch調(diào)度,最終指引ping/curl先去找nscd服務(wù)。nscd服務(wù)是一個(gè)name services cache服務(wù),很多解析結(jié)果他會緩存,而我們知道這個(gè)nscd是運(yùn)行在Host上的,Host上是不能直接訪問rancher-metadata這個(gè)服務(wù)名,所以kubelet容器中就無法訪問rancher-metadata。
其他解決方案其實(shí)我們也未必要如此暴力刪除nscd,nscd也有一些配置,我們可以修改一下以避免這種情況,可以disable hosts cache,這樣nscd中便不會有相應(yīng)內(nèi)容的緩存,所以解析rancher-metadata并不會出現(xiàn)unknown host,而是繼續(xù)向dns nameserver申請解析地址,這樣也不會有問題。
總結(jié)遇到問題不能慌,關(guān)鍵是要沉得住氣,很多看似非常復(fù)雜的問題,其實(shí)往往都是一個(gè)小配置引發(fā)的血案。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/32559.html
摘要:引言能夠支持,可以快速幾乎無障礙的拉起一套環(huán)境,這對剛?cè)腴T的小白來說簡直是一大利器。本文就分析一下關(guān)于無法訪問問題。檢查一下有問題的節(jié)點(diǎn)的系統(tǒng),果然會發(fā)現(xiàn)安裝了服務(wù)服務(wù)名為。 引言 Rancher能夠支持Kubernetes,可以快速幾乎無障礙的拉起一套K8s環(huán)境,這對剛?cè)腴TK8s的小白來說簡直是一大利器。當(dāng)然由于系統(tǒng)特性五花八門,系統(tǒng)內(nèi)置軟件也相互影響,所以有時(shí)候伙伴們會碰到比較難纏...
摘要:組件會給每個(gè)分配一個(gè),則替代了的來實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),在的容器內(nèi)部依然可以訪問服務(wù)來獲取元數(shù)據(jù)信息。的需要在中實(shí)現(xiàn)一個(gè),目前只有,而則維護(hù)了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產(chǎn)生了疑惑,諸如Cattle引擎和這幾個(gè)之間到底什么關(guān)系?每種引擎是如何支持的?自家的業(yè)務(wù)環(huán)境...
摘要:組件會給每個(gè)分配一個(gè),則替代了的來實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),在的容器內(nèi)部依然可以訪問服務(wù)來獲取元數(shù)據(jù)信息。的需要在中實(shí)現(xiàn)一個(gè),目前只有,而則維護(hù)了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產(chǎn)生了疑惑,諸如Cattle引擎和這幾個(gè)之間到底什么關(guān)系?每種引擎是如何支持的?自家的業(yè)務(wù)環(huán)境...
摘要:組件會給每個(gè)分配一個(gè),則替代了的來實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),在的容器內(nèi)部依然可以訪問服務(wù)來獲取元數(shù)據(jù)信息。的需要在中實(shí)現(xiàn)一個(gè),目前只有,而則維護(hù)了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產(chǎn)生了疑惑,諸如Cattle引擎和這幾個(gè)之間到底什么關(guān)系?每種引擎是如何支持的?自家的業(yè)務(wù)環(huán)境...
摘要:組件會給每個(gè)分配一個(gè),則替代了的來實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),在的容器內(nèi)部依然可以訪問服務(wù)來獲取元數(shù)據(jù)信息。的需要在中實(shí)現(xiàn)一個(gè),目前只有,而則維護(hù)了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產(chǎn)生了疑惑,諸如Cattle引擎和這幾個(gè)之間到底什么關(guān)系?每種引擎是如何支持的?自家的業(yè)務(wù)環(huán)境...
閱讀 1490·2021-11-22 13:52
閱讀 1308·2021-09-29 09:34
閱讀 2715·2021-09-09 11:40
閱讀 3038·2019-08-30 15:54
閱讀 1265·2019-08-30 15:53
閱讀 979·2019-08-30 11:01
閱讀 1364·2019-08-29 17:22
閱讀 1957·2019-08-26 10:57