做排名的網(wǎng)站哪個(gè)好seo軟件系統(tǒng)
目錄
- 一、前言
- 二、準(zhǔn)備工作
- 三、問(wèn)題排查
- 四、總結(jié)
- 參考資料
一、前言
在經(jīng)過(guò)前面幾天k8s和Istio的安裝之后,開(kāi)始進(jìn)入最核心的階段。微服務(wù)在拋棄傳統(tǒng)的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)之后,是怎么在istio怎么做服務(wù)間的調(diào)用的呢?本次實(shí)戰(zhàn)花費(fèi)了我2-3天的時(shí)間,經(jīng)過(guò)不斷的嘗試,折騰,最后終于把服務(wù)間的調(diào)用調(diào)通了。下面我將介紹我本次的實(shí)踐過(guò)程,希望對(duì)于同樣在研究這個(gè)技術(shù)有困難的同學(xué)提供一定的幫助。
二、準(zhǔn)備工作
對(duì)應(yīng)不熟悉的技術(shù),我也是首先找了這方面的博文。我本次也是參考如下兩篇博文進(jìn)行實(shí)踐的:
- istio gateway入口流量路由管控
- istio 訪問(wèn)網(wǎng)格內(nèi)的服務(wù)(路由管理)
對(duì)于第一篇博文還是比較順利的,問(wèn)題就出在第二篇博文。在最關(guān)鍵的那一步服務(wù)間的調(diào)用,出現(xiàn)問(wèn)題了,報(bào)錯(cuò)日志如下:
upstream connect error or disconnect/reset before headers. reset reason: connection failure, transport failure reason: delayed connect error: 111
我看有博文上有顯示pilot 的pod,我還還懷疑是我少安裝了pilot,找了一圈也沒(méi)發(fā)現(xiàn)怎么安裝pilot。
后面再安裝了kiali 之后,在調(diào)用中又看到了如下的報(bào)錯(cuò):
PassthroughCluster
然后又經(jīng)過(guò)一陣折騰,又報(bào)了如下的錯(cuò)誤:
503 Service Unavailable: [no body]
后面我還咨詢了博主本人,問(wèn)是不是spring項(xiàng)目中需要加spring-cloud-kubernetes 依賴,然后博主還回復(fù)我了不需要這個(gè),用的就是istio的 LoadBalancer。
三、問(wèn)題排查
幾個(gè)關(guān)鍵點(diǎn)如下:
- ingressgateway 的類型
istio 安裝時(shí)使用istioctl install --set profile=demo -y 安裝的時(shí)候ingressgateway 默認(rèn)安裝的類型就是LoadBalancer,后面我為了方便訪問(wèn)我改完了NodePort。通過(guò)上面博主的提示,然后我看他博文里面ingressgateway 的類型確實(shí)為L(zhǎng)oadBalancer,于是我就將它改過(guò)來(lái)了,然后我看他的EXTERNAL-IP 是“l(fā)ocalhost” 于是我也將我的ingressgateway 的EXTERNAL-IP 改為了本機(jī)IP,如下圖所示:
- istio-springboot-demo-b服務(wù)是否正常
當(dāng)我安裝istio-springboot-demo-a服務(wù)的方式部署完istio-springboot-demo-b后,發(fā)現(xiàn)istio-springboot-demo-b并不能正常訪問(wèn)。我才發(fā)現(xiàn)istio-springboot-demo-a項(xiàng)目的端口是8080,這是微服務(wù)默認(rèn)的端口,istio-springboot-demo-b服務(wù)在容器里面配的是8081,但是我在微服務(wù)項(xiàng)目里面并沒(méi)有配置這個(gè)端口,于是我加上配置重新打包鏡像。至于怎么通過(guò)容器端配置修改服務(wù)的端口我后面再研究。
3.服務(wù)間調(diào)用通過(guò)IP是否能調(diào)用通
當(dāng)我在閱讀如下博文Istio(十二):Istio問(wèn)題排查的之后,我查看了我的springboot-demo-b服務(wù)的情況,如下圖所示
于是服務(wù)間調(diào)用我通過(guò)POD IP可以正常調(diào)用,如下圖所示:
然后我又通過(guò)SVC IP也可以正常調(diào)用,如下圖所示:
在我寫本文之前SVC 端口是8081,后面我將SVC 端口IP換成了80,
后面又通過(guò)服務(wù)名+端口也可以正常調(diào)用了,如下圖所示:
最后,我將SVC 端口8081改為80就大功告成了(80端口可以省略,同命名空間調(diào)用.svc.cluster.local也可以省略)
四、總結(jié)
通過(guò)本次實(shí)驗(yàn),掌握了通過(guò)命令修改SVC type和externalIPs的方法,如下所示:
kubectl patch service kiali -n istio-system -p '{"spec":{"type":"NodePort"}}'
kubectl patch svc istio-ingressgateway --namespace istio-system --patch '{"spec": { "externalIPs": ["192.168.1.29"] }}'
還包括kubectl的如下方法:
kubectl edit svc istio-ingressgateway -n istio-systemkubectl get pod istio-springboot-demo-b-v1-6859cf6699-nrl4r -n istio-demos -o json kubectl describe pod istio-springboot-demo-b-v1-5c789bf465-72f4c -n istio-demos
另外學(xué)會(huì)了xshell 批量發(fā)送請(qǐng)求
for i in $(seq 1 100); do curl -s -o /dev/null "http://192.168.1.29:32207/productpage"; done
參考資料
- istio 訪問(wèn)網(wǎng)格內(nèi)的服務(wù)(路由管理)
- istio gateway入口流量路由管控
- Istio(十二):Istio問(wèn)題排查
- istio服務(wù)案例實(shí)踐
- 在 Istio 中調(diào)試 503 錯(cuò)誤
- OpenShift 4 之Istio-Tutorial (8) 在服務(wù)之間配置Mutual TLS雙向傳輸安全