云計算-Kubernetes+Istio 實現金絲雀發布:流量管理、熔斷、流量鏡像、ingreess、污點及pv案例實戰

介紹

在微服務架構中,如何安全、高效地實現服務發布與流量管理是保障業務穩定性的核心挑戰。金絲雀發布(Canary Release)、灰度發布等策略通過精細化的流量控制,可有效降低新版本上線風險, Istio 作為主流的服務網格(Service Mesh)工具。

此次Istio 在 Kubernetes 集群中的實戰應用展開,從基礎環境準備(如系統內核升級以適配 IPVS 模塊)到 Istio 的完整部署流程,再到核心功能的實踐 —— 包括通過虛擬服務(VirtualService)和目標規則(DestinationRule)實現流量分配(如 10% 流量導向金絲雀版本)、配置熔斷機制保護服務穩定性、利用流量鏡像實現無感知測試、通過 Ingress Gateway 暴露服務并控制外部訪問路徑

1.金絲雀發布-安裝 Istio

由于 Kubernetes 使用的 IPVS 模塊需要系統內核版本支持,試使用提供的軟件包(Canary_v1.0.tar.gz 在 http 服務下)將系統內核進行升級,在 Kubernetes 集群上完成 Istio 的安裝,并將 default Namespace 設置自動注入。

升級內核

 設置 GRUB_DEFAULT=0,通過上面查詢顯示的編號為 0 的內核作為默認內核
 [root@master ~]# vi /etc/default/grub
 #GRUB_DEFAULT=0必須在GRUB_DEFAULT=saved下面,否則升級失敗(可能),放在首部內核升級失敗
 [root@master ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
 [root@masater ~]#tar -zxvf Canary_v1.0.tar.gz 
 [root@master]# cd kernel/
 [root@master kernel]# yum install -y kernel-lt-5.4.119-1.el7.elrepo.x86_64.rpm linux-firmware-20200421-80.git78c0348.el7_9.noarch.rpm
 #重啟
 reboot
 #驗證
 [root@master ~]# uname -r
 5.4.119-1.el7.elrepo.x86_64

安裝Istio

 #導入鏡像
 [root@masater ~]# cd images/ 
 #確保harbor啟動完成
 [root@masater images]# ./image_push.sh
 導入比較慢,多等等
 #istio環境配置
 [root@master ~]# mv istio-1.9.5/ /usr/local/bin/
 [root@master ~]# cat /etc/profile
 export istio=/usr/local/bin/istio-1.9.5
 export PATH=$PATH:$istio/bin
 [root@master ~]# source /etc/profile
 -------------------------
 檢查運行環境:
 [root@master istio-1.9.5]# istioctl x precheck
 #沒有報錯即可
 安裝istio的核心組件:
 #注意修改IP(采用demo的安裝方式)
 [root@master istio-1.9.5]# istioctl install -y --set profile=demo --set hub=192.168.30.10/library
 查看安裝的資源:
 [root@master istio-1.9.5]# kubectl -n istio-system get pods
 NAME                             READY    STATUS    RESTARTS   AGE
 istio-egressgateway-6f9f4ddc9c-rgtcl     1/1        Running     0          6m46s
 istio-ingressgateway-78b47bc88b-52fd2    1/1        Running     0          6m46s
 istiod-67dbfcd4dd-56n66                  1/1        Running     0          9m10s #將default Namespace設置自動注入(為資源設置標簽)
 [root@master istio-1.9.5]# kubectl label namespace default istio-injection=enabled
 namespace/default labeled
 #查看目前開啟自動注入的 Namespace:
 [root@master istio-1.9.5]# kubectl get ns --show-labels=true

2.金絲雀發布-流量控制

使用文件(istio-1.9.5/samples/helloworld/helloworld.yaml)在 default 命名空間下完成 hellworld 服務的部署,然后設置路由規則來控制流量分配,創建一個虛擬服務helloworld;再創建一個目標規則 helloworld,將 10%的流量發送到金絲雀版本(v2)。

 ?
 ?
 [root@master ~]# cd /usr/local/bin/istio-1.9.5/samples/
 [root@master samples]# kubectl apply -f helloworld/helloworld.yaml
 [root@master helloworld]# cat helloworld-route.yaml 
 #創建一個虛擬服務helloworld
 apiVersion: networking.istio.io/v1alpha3
 kind: VirtualService     #針對指定服務的流量路由規則
 metadata:
   name: helloworld
 spec:
   hosts:        #必要字段:流量的目標主機
   - helloworld
   http:              #HTTP 流量規則的有序列表
 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95842.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95842.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

12.web api 3

定時器-間歇函數

ComfyUI進階:EchoMimic插件全解析,讓靜態肖像實現音頻驅動的精準口型動畫

在數字內容創作中,讓靜態肖像“開口說話”并做出自然表情,是提升交互感與沉浸感的關鍵。傳統動畫制作需專業人員逐幀調整口型與表情,成本高且效率低。ComfyUI的EchoMimic插件通過音頻驅動技術,實現了“輸入音頻→自動生成匹配口型…

鏈式前向星、vector存圖

場景設定 想象你是一個社交達人,要記錄你和所有朋友的關系(這就是“圖”)。每個朋友是一個節點,關系是一條邊。你需要快速回答:“我有哪些朋友?”(遍歷鄰居)。方式1:鏈式…

YAML 中定義 List 的幾種方式

在 YAML 配置文件中定義 List 并在 Spring 應用中注入是非常常見的操作,下面詳細介紹具體寫法和注入方式。一、YAML 中定義 List 的幾種方式1. 縮進式寫法(推薦)最常用的方式,通過短橫線 - 加空格表示列表項:yaml# app…

C# 反射和特性(自定義特性)

自定義特性 你或許已經注意到了,應用特性的語法和之前見過的其他語法有很大不同。你可能會覺得特 性是一種完全不同的結構類型,其實不是,特性只是一種特殊的類。 有關特性類的一些要點如下。 用戶自定義的特性類叫作自定義特性。所有特性類都…

科目二的四個電路

一.K21電動機單連續運轉接線(帶點動控制)1.電路圖2.主線路這可很明了,是一條直線,從上接到下就OK了,然后從熱繼電器出來,接到SB3按鈕的常閉觸點上接著往下走一端接到SB2的常閉觸點上,接著往下走,走到接觸器的線圈上,從L2借一條火線出來,從熔斷器的上端接入,另一端接…

【位運算】查詢子數組最大異或值|2693

本文涉及知識點 位運算、狀態壓縮、枚舉子集匯總 3277. 查詢子數組最大異或值 給你一個由 n 個整數組成的數組 nums,以及一個大小為 q 的二維整數數組 queries,其中 queries[i] [li, ri]。 對于每一個查詢,你需要找出 nums[li…ri] 中任…

HTML DOM 方法

HTML DOM 方法 引言 HTML DOM(文檔對象模型)是HTML文檔的編程接口,它允許開發者通過JavaScript來操作HTML文檔中的元素。DOM 方法是DOM編程的核心,它提供了豐富的操作手段來改變網頁的結構、樣式和行為。本文將詳細介紹HTML DOM中…

w嵌入式分享合集68

自己的原文哦~ https://blog.51cto.com/whaosoft/14133002 一、一鍵開關機電路的設計方案 方案一:電路圖 一鍵開關機電路分析如下: 電路工作流程如下: Key按下瞬間,Q2、Q1導通,7805輸入電壓在8.9V左右&…

FFmpeg QoS 處理

FFmpeg 中的 QoS (服務質量) 處理主要關注于實時流媒體傳輸中的時序控制、丟幀策略和網絡適應等方面。以下是 FFmpeg 中 QoS 相關的關鍵機制和配置方法。1. 基本 QoS 機制丟幀策略 (Frame Dropping)cAVDictionary *options NULL; av_dict_set(&options, "framedrop&q…

TexStudio中的Latex,PDFLatex,XeLatex和LuaLatex的區別

多種LaTeX編譯器一、多種LaTeX編譯器 1.1 PDFLaTeX(1994年) 默認、最常用的引擎。 輸入文件通常是 ASCII 或 UTF-8 編碼(但中文需要 CJK 宏包或 ctex 宏包支持)。 字體選擇受限:只能使用 TeX 自帶的字體或者 Type 1…

容器化部署:用Docker封裝機器翻譯模型與服務詳解

文章目錄一、機器翻譯容器化的技術棧選型1.1 為什么需要容器化MT模型?1.2 基礎鏡像選擇對比1.3 典型依賴分層方案1.4 性能對比(容器化 vs 原生部署)二、關鍵部署模式2.1 輕量級API服務封裝2.2 模型熱更新策略三、Docker鏡像構建3.1 編寫Docke…

leetcode_42 接雨水

1. 題意 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 2. 題解 這個題不會做,全部是看得題解捏。 不過能看懂題解感覺自己也很棒了! 看完題解后感覺最難的是如何求出有多少…

Spring Boot 整合 Thymeleaf 模板引擎:從零開始的完整指南

引言:為什么選擇 Thymeleaf? Thymeleaf 是一個現代化的服務器端 Java 模板引擎,專為 Web 開發而設計。與 JSP 不同,Thymeleaf 模板是純 HTML 文件,可以直接在瀏覽器中預覽,無需后端服務器支持。這種"…

pytest介紹(python測試框架)(@pytest.mark.parametrize、@pytest.fixtures)

文章目錄**1. 核心特點**- **簡潔易用**:無需復雜的配置,只需編寫簡單的函數或類即可進行測試。- **豐富的斷言**:直接使用 Python 內置的 assert 語句,失敗時提供詳細的錯誤信息。- **自動發現測試**:通過約定的命名規…

[Python 基礎課程]繼承

在 Python 的面向對象編程(OOP)中,繼承(Inheritance) 是一種重要的機制,它允許一個類(稱為子類或派生類)從另一個類(稱為父類、基類或超類)中繼承屬性和方法。…

QT之設計器組件功能(8大類55個組件)

組件名稱 功能描述關鍵屬性1. Layouts(布局組件)(1) Vertical Layout(垂直布局)將子控件按垂直方向依次排列layoutSpacing:控件之間的間距layoutMargin:布局邊緣的邊距layoutStretch:設置各控件…

java中list的api詳細使用

在Java中,List是集合框架中最常用的接口之一,繼承自Collection,代表有序、可重復的元素集合(允許null元素)。其核心實現類有ArrayList(數組實現,隨機訪問高效)、LinkedList&#xff…

Azure AI Search 探索總結

Azure AI Search 原名 Azure Cognitive Service,是Azure中用來給AI項目構建知識庫的組件。知識庫本質和數據庫很像,但是內部的存儲結構和檢索算法不一樣。比如并不是知識庫的每一列都可以用來過濾、檢索或group by,而是要根據實際情況配置。A…

高效解決 pip install 報錯 SSLError: EOF occurred in violation of protocol

高效解決 pip install 報錯 SSLError: EOF occurred in violation of protocol 標簽: Python, pip, SSLError, Clash, 網絡代理, 問題解決 一、問題描述 在Python開發中,pip 是我們最親密的伙伴。然而,當你身處需要科學上網的環境&#xff0c…