第二十章 九析帶你輕鬆完爆 Istio - virtual service 簡述

系列文章:web


總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程tomcat

目錄服務器

1 前言app

2 邀約ide

3 virtual service 簡述微服務

4 virtual service 樣例spa

    4.1 jiuxi-busybox.yamlorm

    4.2 jiuxi-deployment.yaml視頻

    4.3 jiuxi-svc.yamlblog

    4.4 jiuxi-vs.yaml

5 Istio 注入

6 登陸客戶端驗證規則生效

7 總結


1 前言

        若是你對博客有任何疑問,請告訴我。1.png


2 邀約

        你能夠從 b 站搜索 「九析」,獲取免費的、更生動的視頻資料:clipboard2.png


3 virtual service 簡述

        在前面的章節中已經講過了 virtual service 的概念和理論了。這裏再作一個贅述,virtual service 是虛擬服務,它並不是真正的 k8s service,首先不能經過 kubectl get svc 的方式找到它,其次在服務調用的時候也不會直接調用它,它就像 k8s service 背後的女人同樣,牢牢握着 k8s service 的老二,讓它乖乖按照本身的旨意將請求流量路由到網格內的特定目標。

以下是常常困擾初學者的問題,下面一一作解答。

問題一:Virtual service 跟 k8s service 的關係是什麼。屬於強綁定嗎?

回答:不是強綁定。virtual service 能夠幫助 k8s service 在路由控制上作到更細粒度,沒必要只是 Round-Robin 策略。


問題二:Virtual service 必需要跟 Istio traffic management 的其餘資源,好比 destination rule、gateway、service entries 捆綁使用嗎?

回答:否。Virtual service 自身就能夠產生做用。固然它也能夠跟網關,或者跟 destination rule 一塊兒構造更加靈活、豐富的路由規則。


問題三:路由規則(Routing rules)跟 Destination rule 是一樣的東西嗎?

回答:否。路由規則是邏輯上的概念,而 Destination rule 是 Istio 的一種資源。你能夠將 Destination rule 看作 Routing rules 的子集。


問題四:Virtaul service 的 hosts 字段填寫什麼內容?

回答:hosts 字段值是客戶端向服務發送請求時使用的地址。這個地址能夠是 IP 地址、DNS 名稱、也能夠是 k8s service 名稱(短名詞地址或者完整地址,好比 web-svc.default.cluster.local),若是是短名稱,要求能夠隱式或者顯式地解析爲徹底限定域名(FQDN)。固然也可使用通配符(*)前綴,從而爲全部匹配的服務建立一套路由規則。虛擬服務主機實際上不必定是 Istio 服務註冊表的一部分,它們只是能夠可尋址的虛擬目的地而已。這樣,也就能夠爲網格內沒有可路由條目的虛擬主機流量進行建模。


4 virtual service 樣例

        下面介紹一個 virtual service 獨立做用的例子,本例須要的資源以下:

# 調用服務的客戶端

jiuxi-busybox.yaml

# 兩個 web 服務器: tomcat 和 httpd。模擬兩個微服務,須要被 Istio 注入,注入後就變成服務網格中的服務

jiuxi-deployment.yaml


# 定義 3 個服務:httpd-svc 指向 httpd,tomcat-svc 指向 tomcat。web-svc 同時指向 httpd 和 tomcat

jiuxi-svc.yaml


# Istio virtual service:定義虛擬服務,該虛擬服務做用在 web-svc 服務上,並設置簡單的路由規則(Routing rule,而非 Destination rule)

jiuxi-vs.yaml

        下面一一介紹各個資源文件明細。

4.1 jiuxi-busybox.yaml

        代碼以下圖所示:clipboard3.png

4.2 jiuxi-deployment.yaml

        代碼以下截圖所示:clipboard4.png

4.3 jiuxi-svc.yaml

        代碼以下截圖所示:clipboard5.png

4.4 jiuxi-vs.yaml

        代碼以下截圖所示:clipboard6.png


5 Istio 注入

        針對客戶端和 deployment 執行手工注入:

istioctl kube-inject -f jiuxi-deploy.yaml jiuxi-busybox.yaml | kubectl apply -f -

istioctl kube-inject -f jiuxi-busybox.yaml | kubectl apply -f -


6 登陸客戶端驗證規則生效

        登陸到 busybox,而後經過以下命令都可以看到規則生效:

wget -q -O - http://web-svc:8080 # web-svc 是 k8s service。字母 O,非數字 0

wget -q -O - http://IP:8080 # IP 是 web-svc 的 ClusterIP。


7 總結

        自此九析帶你輕鬆完爆了 Istio traffic management 的 virtaul service。

相關文章
相關標籤/搜索