第二十二章 九析帶你輕鬆完爆 Istio - destination rule 實例

系列文章:


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

目錄

1 前言

2 邀約

3 介紹

4 灰度

5 destination rule 樣例

    5.1 客戶端資源文件

    5.2 deployment 資源文件

    5.3 service 資源文件

    5.4 Istio virtual service 資源文件

    5.5 Istio destination rule 資源文件

6 Istio 注入

7 驗證 destination rule


1 前言

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


2 邀約

        你可以從 b 站搜索 “九析”,獲取免費的、更生動的視頻資料:clipboard2.png


3 介紹

        在上章節介紹了一個使用 Virtual Service 實現按權重(weight)分配流量的例子。整個過程如下架構圖所示:clipboard3.png

        整個流控過程僅僅添加了一個 virtual service 就得以解決,有關 virtual service 的代碼如下所示:clipboard4.png

        但是上面這種方案在於調用方通過兩層服務才能調用到最終的 Pod(比如:客戶端需要通過 web-svc 和 nginx-svc 才能最終調用到 Nginx Pod)。能不能僅僅只通過一層服務就能達到這樣的效果呢?(即:只通過 web-svc)。答案是必須可以。


4 灰度

        其實上面的樣例非常山寨,導致根本就沒有實際工作場景可以複製,僅僅只是爲了展示獨立 virtual service 功能。

        但是按權重分配流量確是工作中常見的需求,比如灰度、金絲雀、藍綠髮布等。

        灰度,意味着做事並沒有那麼敞亮,比如,你想跟一個心儀的女子上演一幕東京愛情故事,你的做法大概是跟她曖昧、愛撫、親吻、最後進行愛的鼓掌。整個過程的本質就是完成一次狀態轉移,即從孤軍奮戰式擼管狀態轉移到團隊協作式鼓掌狀態。

        灰度發佈的過程跟上面的過程比較類似,都是亦步亦趨,循循善誘的過程。即:將版本 v1 的服務變更到版本 v2,但是卻並不採用剛烈的極端做法。具體做法是先切 20% 流量給版本 v2,觀察一陣子沒啥異常事情發生,就再切 20% 流量,然後逐步切換剩下的其他流量,最終完成整個版本的替換以及所有用戶流量的轉移。


5 destination rule 樣例

        下面介紹使用 virtual service + destination rule 來實現灰度發佈。有關 destination rule 的理論在下章節介紹。整個樣例的架構圖如下:clipboard5.png

        樣例所需要的資源文件介紹如下:

# 客戶端,用來訪問 httpd-v1 和 httpd-v2 的容器資源文件

jiuxi-client.yaml

# deployment,聲明並定義 httpd 的資源文件

jiuxi-deploy.yaml

# service,關聯 httpd pod 的資源文件

jiuxi-svc.yaml

# Istio virtual service,聲明流量路由和權重的資源文件

jiuxi-vs.yaml

# Istio destination rule,定義流量路由的資源文件

jiuxi-dr.yaml

5.1 客戶端資源文件

        jiuxi-client.yaml:clipboard6.png

5.2 deployment 資源文件

        jiuxi-deploy.yaml:clipboard7.png

5.3 service 資源文件

        jiuxi-svc.yaml:clipboard8.png

5.4 Istio virtual service 資源文件

        jiuxi-vs.yaml:clipboard9.png

5.5 Istio destination rule 資源文件

        jiuxi-dr.yaml:clipboard10.png


6 Istio 注入

        要使得 virtual service 和 destination rule 生效,必須要保證通訊雙方都處於 Istio 服務網格之內,即:必須經過 Istio 的注入,執行語句如下:

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

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


7 驗證 destination rule

        登入 busybox client 容器,訪問 jiuxi-svc,發現 dr 已經生效,截圖如下:clipboard11.png

        自此,九析帶你輕鬆完爆了 Istio destination rule 實例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章