溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

idou教你學(xué)Istio10 : 如何用Istio實(shí)現(xiàn)K8S Egress流量管理

發(fā)布時(shí)間:2020-07-10 07:16:21 來(lái)源:網(wǎng)絡(luò) 閱讀:273 作者:容器魔方 欄目:云計(jì)算

上一篇我們了解了如何控制入口流量,本文主要介紹在使用Istio時(shí)如何訪問(wèn)集群外服務(wù),即對(duì)出口流量的管理。

默認(rèn)安裝的Istio是不能直接對(duì)集群外部服務(wù)進(jìn)行訪問(wèn)的,如果需要將外部服務(wù)暴露給 Istio 集群中的客戶(hù)端,目前有兩種方案:

  1. 配置ServiceEntry

  2. 配置global.proxy.includeIPRanges

配置serviceEntry訪問(wèn)外部服務(wù)

ServiceEntry用于將額外的條目添加到Istio內(nèi)部維護(hù)的服務(wù)注冊(cè)表中,從而讓網(wǎng)格中自動(dòng)發(fā)現(xiàn)的服務(wù)能夠訪問(wèn)和路由到這些手動(dòng)加入的服務(wù)。

ServiceEntry 描述了服務(wù)的屬性(DNS 名稱(chēng)、VIP、端口、協(xié)議以及端點(diǎn))。這類(lèi)服務(wù)可能是網(wǎng)格外的 API,或者是處于網(wǎng)格內(nèi)部但卻不存在于平臺(tái)的服務(wù)注冊(cè)表中的條目(例如需要和 Kubernetes 服務(wù)溝通的一組虛擬機(jī)服務(wù))。

配置ServiceEntry 也很簡(jiǎn)單,允許從網(wǎng)格內(nèi)部訪問(wèn)HTTP,HTTPS,Mongo,TCP等協(xié)議的外部服務(wù)。下面分別列舉了對(duì)外部TCP服務(wù)和HTTP服務(wù)的訪問(wèn)配置。具體的ServiceEntry的配置參數(shù)定義可參考:

https://istio.io/docs/reference/config/istio.networking.v1alpha3/#ServiceEntry

外部TCP服務(wù)訪問(wèn)配置示例:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: mysql
spec:
  hosts:  
  - 192.168.0.245  
  ports:  
  - number: 3306    
    name: tcp    
    protocol: TCP

外部HTTP服務(wù)訪問(wèn)配置示例:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: foo-ext
spec:
  hosts:  
  - foo.com  
  ports:  
  - number: 80    
    name: http    
    protocol: HTTP

雖然社區(qū)推薦的方式是設(shè)置ServiceEntry來(lái)訪問(wèn)外部服務(wù),但如果集群外需要訪問(wèn)的服務(wù)很多,一個(gè)個(gè)配置起來(lái)就很麻煩,也不方便管理。

配置global.proxy.includeIPRanges

如果使用HELM安裝Istio, 可以在 Helm 中設(shè)置 global.proxy.includeIPRanges 變量為集群clusterIP的范圍,然后進(jìn)行安裝。

如果要對(duì)已經(jīng)安裝好的Istio修改配置,需要修改名為 istio-sidecar-injector 的 Configmap的“-i”的取值為集群clusterIP,稍后重啟所有服務(wù)的pod,重新注入sidecar。然后你會(huì)看到重啟后pod中的initContainers的-i參數(shù)值已經(jīng)變?yōu)榧篶lusterIP的范圍。

這種方式使得只有集群內(nèi)的IP通過(guò)sidecar,對(duì)外部服務(wù)的調(diào)用越過(guò)了 Istio sidecar proxy,讓服務(wù)可以直接訪問(wèn)到對(duì)應(yīng)的外部地址。

相比配置ServiceEntry,這種方式簡(jiǎn)單對(duì) Istio 進(jìn)行全局配置,就可以直接訪問(wèn)所有外部服務(wù)。但缺點(diǎn)是不能治理集群外服務(wù)的訪問(wèn)流量,比如不能對(duì)集群外中間件服務(wù)進(jìn)行熔斷限流;而且需要用戶(hù)了解云供應(yīng)商特定的知識(shí)和配置。

目前社區(qū)還沒(méi)有完美的解決方案,可參考討論:

https://groups.google.com/forum/#!searchin/istio-dev/serviceentry%7Csort:date/istio-dev/0RCt7Jqrcg8/7Ylrr4TABQAJ

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI