雖然k8s有部分微服務(wù)治理功能幻妓,但不全面,使用起來(lái)也不是很方便芝薇。目前主流的微服務(wù)框架有springcloud、istio作儿、dubbo等等洛二。Istio是服務(wù)網(wǎng)格思想的實(shí)現(xiàn)。
·??istio適用于容器或虛擬機(jī)環(huán)境(特別是 k8s)攻锰,兼容異構(gòu)架構(gòu)晾嘶。
·??istio使用 sidecar(邊車模式)代理服務(wù)的網(wǎng)絡(luò),不需要對(duì)業(yè)務(wù)代碼本身做任何的改動(dòng)娶吞。
·??HTTP垒迂、gRPC、WebSocket 和 TCP 流量的自動(dòng)負(fù)載均衡妒蛇。
·??istio通過(guò)豐富的路由規(guī)則机断、重試、故障轉(zhuǎn)移和故障注入绣夺,可以對(duì)流量行為進(jìn)行細(xì)粒度控制吏奸;支持訪問(wèn)控制、速率限制和配額陶耍。
·??istio對(duì)出入集群入口和出口中所有流量的自動(dòng)度量指標(biāo)奋蔚、日志記錄和跟蹤。
與SprintCloud的簡(jiǎn)單比較:
SpringCloud是獨(dú)立于k8s的微服務(wù)框架烈钞,只支持java泊碑。具有完備獨(dú)立的微服務(wù)組件。其中微服務(wù)開發(fā)是侵入式的毯欣,需要在每個(gè)微服務(wù)中包含相關(guān)配置和代碼實(shí)現(xiàn)馒过。
1.K8s中安裝Istio環(huán)境
下載安裝包(所有節(jié)點(diǎn)),這里使用istio1.12版本仪媒,和k8s 1.23版本對(duì)應(yīng)沉桌,對(duì)應(yīng)關(guān)系可查詢官網(wǎng)谢鹊。
wget https://github.com/istio/istio/releases/download/1.12.1/istio-1.12.1-linux-amd64.tar.gz
解壓tar包
設(shè)置環(huán)境變量,以使用istio命令
export PATH=/home/master/istio/istio-1.12.1/bin:$PATH
cp tools/istioctl.bash $HOME/
source ~/istioctl.bash
查看可使用的配置:
istioctl profile list
安裝demo配置的istio
istioctl install --set profile=demo -y
對(duì)應(yīng)yaml文件在manifests/profiles/demo.yaml留凭,將會(huì)創(chuàng)建默認(rèn)istio-ingressgate佃扼,istiod等服務(wù)
查看安裝的服務(wù):
kubectl get svc -n istio-system
Istio組件默認(rèn)安裝在istio-system命名空間:
2.安裝kiali可視化
安裝可視化界面:
kubectl apply -f samples/addons/
kubectl apply -f samples/addons/extras/
映射外網(wǎng)端口(nodeport):
kubectl patch svc -n istio-system kiali -p '{"spec": {"type": "NodePort"}}'
查看映射的端口
kubectl get all -n istio-system
外網(wǎng)登錄訪問(wèn):