新聞中心
如何將虛擬機整合到Istio服務(wù)網(wǎng)格中?
譯文
作者:布加迪編譯 2020-11-04 08:00:57
云計算
虛擬化 Istio是一種流行的服務(wù)網(wǎng)格,用于連接、保護、控制和觀察服務(wù)。Kubernetes于2017年作為開源系統(tǒng)首次亮相后,贏得了容器編排大戰(zhàn),Istio滿足了向微服務(wù)遷移的組織的需要。

【51CTO.com快譯】 Istio是一種流行的服務(wù)網(wǎng)格,用于連接、保護、控制和觀察服務(wù)。Kubernetes于2017年作為開源系統(tǒng)首次亮相后,贏得了容器編排大戰(zhàn),Istio滿足了向微服務(wù)遷移的組織的需要。雖然Istio聲稱支持Nomad、Consul、Eureka、Cloud Foundry和Mesos等異構(gòu)環(huán)境,但實際上始終與Kubernetes協(xié)同運行最順暢,畢竟Istio的服務(wù)發(fā)現(xiàn)基于Kubernetes。
Istio在開發(fā)初期因許多問題而飽受詬?。航M件數(shù)量眾多,安裝和維護復(fù)雜,調(diào)試?yán)щy,因引入太多新概念和對象(多達(dá)50個CRD)而不易上手,Mixer組件給性能帶來了影響。但是Istio團隊在逐步解決這些問題。從2020年初發(fā)布的路線圖可以看出,Istio已取得長足進(jìn)展。
Istio團隊今年的主要重點是將基于虛擬機的工作負(fù)載更好地整合到網(wǎng)格中。本文介紹了為什么Istio需要與虛擬機整合以及如何實現(xiàn)。
為什么Istio應(yīng)支持虛擬機?
雖然容器和Kubernetes現(xiàn)已被廣泛使用,但是仍有許多服務(wù)部署在需要由Istio網(wǎng)格管理的Kubernetes集群之外的虛擬機和API上。將舊環(huán)境與新環(huán)境的管理統(tǒng)一起來是個巨大挑戰(zhàn)。
將虛擬機添加到網(wǎng)格需要什么?
介紹如何添加之前,先介紹將虛擬機添加到網(wǎng)格需要什么。支持虛擬機流量時,Istio須了解以下幾點:哪些虛擬機擁有應(yīng)是網(wǎng)格一部分的服務(wù)?如何訪問虛擬機?每個虛擬機還需要身份,以便與網(wǎng)格的其余部分安全地聯(lián)系。這些要求與Kubernetes CRD以及像Consul這種功能完備的服務(wù)注冊中心(Service Registry)兼容。而基于服務(wù)帳戶的身份引導(dǎo)可充當(dāng)為沒有平臺身份的虛擬機分配工作負(fù)載身份的機制。對于確實有平臺身份的虛擬機(比如EC2、GCP或Azure等),Istio正致力于將Kubernetes身份與平臺身份進(jìn)行交換,以便建立mTLS通信。
Istio如何支持虛擬機?
Istio支持虛擬機始于其服務(wù)注冊機制。Istio網(wǎng)格中有關(guān)服務(wù)和實例的信息來自Istio的服務(wù)注冊中心,到目前為止,服務(wù)注冊中心只查看或跟蹤pod。在較新版本中,Istio現(xiàn)在擁有用于跟蹤和監(jiān)測虛擬機的資源類型。網(wǎng)格內(nèi)的邊車(sidecar)無法觀察和控制進(jìn)入到網(wǎng)格外服務(wù)的流量,因為它們沒有任何關(guān)于它們的信息。
Istio社區(qū)在Istio支持虛擬機方面做了很多的工作。1.6版本增加了WorkloadEntry,使您可以像描述Kubernetes中運行的主機那樣描述虛擬機。在1.7版本中,該版本開始通過令牌將引導(dǎo)虛擬機的基礎(chǔ)自動添加到網(wǎng)格中,Istio處理繁重的任務(wù)。Istio 1.8將首次引入名為WorkloadGroup的另一個抽象,它類似Kubernetes Deployment對象,不過面向虛擬機。
下圖顯示了Istio如何為網(wǎng)格中的服務(wù)建模。信息的主要來源來自平臺服務(wù)注冊中心(比如Kubernetes)或系統(tǒng)(比如Consul)。另外,ServiceEntry充當(dāng)用戶定義的服務(wù)注冊中心,可為虛擬機上的服務(wù)或組織外的外部服務(wù)建模。
Istio中的服務(wù)注冊模型
既然只要使用ServiceEntry就可以在虛擬機中引入服務(wù),為什么在虛擬機中安裝Istio?
使用ServiceEntry,您可以啟用網(wǎng)格內(nèi)的服務(wù)來發(fā)現(xiàn)和訪問外部服務(wù),并管理進(jìn)入到那些外部服務(wù)的流量。與VirtualService結(jié)合使用,您還可以配置相應(yīng)外部服務(wù)的訪問規(guī)則(比如請求超時和故障注入等),從而實現(xiàn)有控制地訪問指定的外部服務(wù)。
即便如此,它也只能控制客戶端上的流量,無法控制對引入到其他服務(wù)的外部服務(wù)的訪問。也就是說,它無法控制作為呼叫發(fā)起者的服務(wù)的行為。在虛擬機中部署邊車,并通過工作負(fù)載選擇器引入虛擬機工作負(fù)載,讓虛擬機可以隨意加以管理,就像Kubernetes中的pod那樣。
展望未來
從bookinfo演示(https://istio.io/latest/docs/examples/virtual-machines/bookinfo/)可以看到,這個過程涉及太多的手動工作,很容易出錯。將來,Istio將提高虛擬機測試的逼真度,基于平臺身份實現(xiàn)自動引導(dǎo),改善DNS支持和istioctl調(diào)試等。您可以關(guān)注Istio環(huán)境工作組(https://github.com/istio/community/blob/master/WORKING-GROUPS.md),以獲得有關(guān)虛擬機支持的更多詳細(xì)信息。
當(dāng)前題目:如何將虛擬機整合到Istio服務(wù)網(wǎng)格中?
本文地址:http://m.fisionsoft.com.cn/article/dhshcgh.html


咨詢
建站咨詢
