真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何輕松調(diào)試K8S服務(wù)

如何輕松調(diào)試K8S服務(wù),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)專注于阿里地區(qū)企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。阿里地區(qū)網(wǎng)站建設(shè)公司,為阿里地區(qū)等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

在Kubernetes中,服務(wù)是一個(gè)核心概念。這里將介紹如何調(diào)試K8S服務(wù),這些服務(wù)是由多個(gè)Pod組成的工作負(fù)載的抽象接口(主機(jī)+端口)。

在我們深入探索debug方法之前,我們先簡(jiǎn)單回顧一下網(wǎng)絡(luò),這是Kubernetes服務(wù)的基礎(chǔ)。

  • 在一個(gè)pod中的容器共享相同的網(wǎng)絡(luò)空間和IP。

  • 所有的pod都能通過(guò)IP彼此通信。

  • 每個(gè)節(jié)點(diǎn)都能看到所有的Pod,反之亦然。

  • Pod可以看到所有的服務(wù)。

那么,在實(shí)踐中這些意味著什么呢?

如何輕松調(diào)試K8S服務(wù)

在圖中:

  • 位于Pod1中的容器B可以直接作為localhost尋址容器A

  • 容器B可以通過(guò)其IP直接尋址Pod2(kubectl get pod -o wide)。我們知道當(dāng)pod2出現(xiàn)故障時(shí)著不是一個(gè)可靠的通信渠道,并且一個(gè)新的pod可以出現(xiàn)在其位置中。但是我們無(wú)法追逐不斷變化的目標(biāo)。

  • 接下來(lái),容器B可以通過(guò)Service x訪問(wèn)pod 2和pod 3,后者將它們的IP與負(fù)載均衡捆綁在一起;因此,在K8S上支持基于微服務(wù)的應(yīng)用程序起著至關(guān)重要的作用

盡管對(duì)Kubernetes的內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)的檢查不在本文的討論范圍內(nèi),但我稍后會(huì)發(fā)布一些參考資料以供大家進(jìn)一步研究。

對(duì)于當(dāng)下,我還是鼓勵(lì)你花費(fèi)一點(diǎn)時(shí)間在實(shí)踐中經(jīng)歷和理解Kubernetes中的網(wǎng)絡(luò)。例如,你可以啟動(dòng)一個(gè)Kubernetes測(cè)試pod并且嘗試從該pod中訪問(wèn)其他pod、節(jié)點(diǎn)和服務(wù)。此處顯示的命令將在Pod內(nèi)彈出一個(gè)Linux shell。

kubectl run -it networktest --image=alpine bin/ash --restart=Never --rm

現(xiàn)在你在Kubernetes網(wǎng)絡(luò)空間內(nèi)并且你可以隨意使用wegt、ping、nslookup之類的命令進(jìn)行實(shí)驗(yàn)。例如,測(cè)試你的Kubernetes集群中先前列出的網(wǎng)絡(luò)要求,nslookup , ping

現(xiàn)在讓我們回到我們的話題,troubleshooting Kubernetes服務(wù),這實(shí)際上是一種網(wǎng)絡(luò)結(jié)構(gòu)。

Step1:檢查服務(wù)是否存在

kubectl get svc

如果服務(wù)不存在,應(yīng)該是服務(wù)創(chuàng)建出現(xiàn)了故障,因此要去檢查你的服務(wù)定義。

Step2:測(cè)試你的服務(wù)

請(qǐng)記住,一個(gè)內(nèi)部的Kubernetes ClusterIP服務(wù)是無(wú)法在集群外部訪問(wèn)的。因此,有兩種方法可以對(duì)其進(jìn)行測(cè)試。方法一,你可以啟動(dòng)一個(gè)測(cè)試Pod,通過(guò)SSH進(jìn)入該pod,然后嘗試像這樣訪問(wèn)你的服務(wù):

kubectl run -it testpod --image=alpine bin/ash --restart=Never --rm

在本文中我們啟動(dòng)一個(gè)alpine Docker鏡像作為pod來(lái)從其內(nèi)部測(cè)試服務(wù):

#works for http services
wget :

#Confirm there is a DNS entry for the service!
nslookup 

或者,你可以轉(zhuǎn)發(fā)到本地計(jì)算機(jī)并在本地進(jìn)行測(cè)試。

kubectl port-forward  8000:8080

現(xiàn)在,你可以通過(guò)localhost:8000訪問(wèn)服務(wù)。

Step3:檢查服務(wù)是否target相關(guān)Pod

Kubernetes服務(wù)會(huì)根據(jù)標(biāo)簽selector將入站流量路由到其中一個(gè)pod,流量通過(guò)其IP路由到目標(biāo)Pod。所以,請(qǐng)檢查服務(wù)是否綁定到那些pod。

kubectl describe service  | grep Endpoints

執(zhí)行上述命令之后,你應(yīng)該看到與列出的工作負(fù)載相關(guān)的所有Pod的IP。如果沒(méi)有看到,請(qǐng)執(zhí)行Step4。

Step4:檢查Pod標(biāo)簽

確保在Kubernetes服務(wù)中的selector與pod的標(biāo)簽相匹配。

kubectl get pods --show-labels
kubectl describe svc 

從下面的截圖的中可以看到,pod的標(biāo)簽在右邊。四個(gè)pod被標(biāo)記為app=tinywebsitetier=frontend,這些標(biāo)簽與下面“described”的服務(wù)selector相匹配。

在這四個(gè)匹配的Pod中,只有三個(gè)正在運(yùn)行,其IP在突出顯示的行中被列為服務(wù)的端點(diǎn)(endpoint)。你還可以在IP列中看到相同的IP。

如何輕松調(diào)試K8S服務(wù)

Step5:確認(rèn)服務(wù)端口與pod相匹配

最后,確保在你的pod中的代碼能夠監(jiān)聽到你為服務(wù)指定的targetPort(例如,你在上方截圖中看到的port8001)!

這十分簡(jiǎn)單,為了讓你更進(jìn)一步深入了解和研究Kubernetes的網(wǎng)絡(luò)世界,歡迎你閱讀以下文章。

  • 在Kubernetes中部署一個(gè)應(yīng)用程序

  • Debug服務(wù)

  • Kubernetes網(wǎng)絡(luò)

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


分享標(biāo)題:如何輕松調(diào)試K8S服務(wù)
文章URL:http://weahome.cn/article/jddpgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部