K8S學習之基礎十七:k8s的藍綠部署

藍綠部署概述

? 藍綠部署中,一共有兩套系統,一套是正在提供服務的系統,一套是準備發布的系統。兩套系統都是功能完善、正在運行的系統,只是版本和對外服務情況不同。

? 開發新版本,要用新版本替換線上的舊版本,在線上的系統之外,搭建了一個使用新版本代碼的全新系統。 這時候,一共有兩套系統在運行(藍綠自定義),正在對外提供服務的老系統是綠色系統,新部署的系統是藍色系統。
在這里插入圖片描述

藍色系統不對外提供服務,用來做什么呢?

? 用來做發布前測試,測試過程中發現任何問題,可以直接在藍色系統上修改,不干擾用戶正在使用的系統。(注意,兩套系統沒有耦合的時候才能百分百保證不干擾)**

藍色系統經過反復的測試、修改、驗證,確定達到上線標準之后,直接將用戶切換到藍色系統:

在這里插入圖片描述

切換后的一段時間內,依舊是藍綠兩套系統并存,但是用戶訪問的已經是藍色系統。這段時間內觀察藍色系統(新系統)工作狀態,如果出現問題,直接切換回綠色系統。

? 當確信對外提供服務的藍色系統工作正常,不對外提供服務的綠色系統已經不再需要的時候,藍色系統正式成為對外提供服務系統,成為新的綠色系統。 原先的綠色系統可以銷毀,將資源釋放出來,用于部署下一個藍色系統。

藍綠部署的優缺點

優點:

  1. 更新過程無需停機,風險較小
  2. 回滾方便,只需要更改路由或切換DNS服務器,效率高

缺點:

  1. 成本高,需要兩套環境,開銷大
  2. 如果新版本有問題會影響全網用戶

藍綠部署示例

  1. 創建service,關聯到myapp上

    vi blue-green-service.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: myapp-v1
    spec:replicas: 10selector:matchLabels:app: myappversion: v1template:metadata:labels:app: myappversion: v1spec:containers:- name: myappimage: 172.16.80.140/myapp/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80
    
  2. 創建pod,使用版本 myapp:v1,作為藍版本

    vi blue.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: myapp-v1
    spec:replicas: 10selector:matchLabels:app: myappversion: v1template:metadata:labels:app: myappversion: v1spec:containers:- name: myappimage: 172.16.80.140/myapp/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80
    

    在這里插入圖片描述

  3. 瀏覽器訪問集群主機ip:30080,結果均為藍色,即v1版本
    在這里插入圖片描述

  4. 創建pod,使用版本 myapp:v2,作為綠版本

    vi green.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: myapp-v2
    spec:replicas: 10selector:matchLabels:app: myappversion: v2template:metadata:labels:app: myappversion: v2spec:containers:- name: myappimage: 172.16.80.140/myapp/myapp:v2imagePullPolicy: IfNotPresentports:- containerPort: 80
    

    在這里插入圖片描述

瀏覽器訪問主機ip:30080,結果為藍色或綠色,即v1和v2版本都在使用
5. 訪問集群主機ip:30080,會發現藍綠不定
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
6. 使用命令查看路由 ipvsadm,service路由到了所有的pod

ipvsadm
TCP  mast01:31180 rr
TCP  mast01:30080 rr-> 10.244.140.76:http           Masq    1      0          0         -> 10.244.140.77:http           Masq    1      0          0         -> 10.244.140.78:http           Masq    1      0          0         -> 10.244.140.79:http           Masq    1      0          0         -> 10.244.140.80:http           Masq    1      0          0         -> 10.244.140.81:http           Masq    1      0          0         -> 10.244.140.82:http           Masq    1      0          0         -> 10.244.140.83:http           Masq    1      0          0         -> 10.244.140.84:http           Masq    1      0          0         -> 10.244.140.85:http           Masq    1      0          0         -> 10.244.196.140:http          Masq    1      0          0         -> 10.244.196.141:http          Masq    1      0          0         -> 10.244.196.142:http          Masq    1      0          0         -> 10.244.196.143:http          Masq    1      0          0         -> 10.244.196.144:http          Masq    1      0          0         -> 10.244.196.145:http          Masq    1      0          0         -> 10.244.196.146:http          Masq    1      0          0         -> 10.244.196.147:http          Masq    1      0          0         -> 10.244.196.148:http          Masq    1      0          0         -> 10.244.196.149:http          Masq    1      0          0         
TCP  mast01:31180 rr
TCP  mast01:https rr

在這里插入圖片描述
在這里插入圖片描述
7. 如果測試業務一切正常,就說明v2版本也滿足需要,接下來就可以停掉v1版本了

kubectl delete -f blue.yaml
kubectl get pods

在這里插入圖片描述
瀏覽器訪問也只有綠色了,即v2版本
8. 如果運行一段時間v2版本有問題,還可以直接按以上方法回退到v1版本

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

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

相關文章

【定制開發】碰一碰發視頻系統定制開發,支持OEM

在短視頻營銷爆發的2025年,"碰一碰發視頻"技術已成為實體商家引流標配。某連鎖餐飲品牌通過定制化開發,單月視頻發布量突破10萬條,獲客成本降低80%!本文將深入解析該系統的技術架構與開發要點,助你快速搭建高…

[Lc7_分治-快排] 快速選擇排序 | 數組中的第K個最大元素 | 庫存管理 III

目錄 1. 數組中的第K個最大元素 題解 代碼 2.庫存管理 III 代碼 1. 數組中的第K個最大元素 題目鏈接:215. 數組中的第K個最大元素 題目分析: 給定整數數組 nums 和整數 k,請返回數組中第 k 個最大的元素。 請注意,你需要…

AI視頻生成工具清單(附網址與免費說明)

以下是一份詳細的AI視頻制作網站總結清單,包含免費/付費信息及核心功能說明: AI視頻生成工具清單(附網址與免費說明) 1. Synthesia 網址:https://www.synthesia.io是否免費:免費試用(生成視頻…

dp_走方格(包含dfs分析,記憶化搜索)

類似題目解析:dp_最長上升子序列(包含dfs分析,記憶化搜索)-CSDN博客 題目鏈接:2067. 走方格 - AcWing題庫 題目圖片: 分析題目(dfs) 這個題目說有一個行為n行,列為m列…

Windows系統安裝python2025最新安裝包,包括環境配置,以及安裝python編程軟件PyCharm2024.3.3免費社區版本,詳細全流程

一、python安裝包安裝 1、python安裝包下載 瀏覽器打開官網,最好是谷歌瀏覽器 https://www.python.org/downloads/windows/ 下載安裝包(注意處理器是32位還是64位) 注意:下載完成后,找到安裝包并雙擊運行。在安裝向導…

【GPT入門】第3課 客服會話質檢(思維鏈)

【GPT入門】第3課 客服會話質檢 1.質檢任務2. 代碼3.核心 1.質檢任務 任務本質是檢查客服與用戶的對話是否有不合規的地方 質檢是電信運營商和金融券商大規模使用的一項技術 每個涉及到服務合規的檢查點稱為一個質檢項 我們選一個質檢項,產品信息準確性&#xff0…

ubuntu 20.04 C++ 源碼編譯 cuda版本 opencv4.5.0

前提條件是安裝好了cuda和cudnn 點擊下載: opencv_contrib4.5.0 opencv 4.5.0 解壓重命名后 進入opencv目錄,創建build目錄 “CUDA_ARCH_BIN ?” 這里要根據顯卡查詢一下,我的cuda是11,顯卡1650,所以是7.5 查詢方法1&#xff1…

K8s 1.27.1 實戰系列(四)驗證集群及應用部署測試

一、驗證集群可用性 1、檢查節點 kubectl get nodes ------------------------------------------------------ NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 3h48m v1.27.1 k8s-node1 Ready <none> …

【C++設計模式】第七篇:橋接模式(Bridge)

注意&#xff1a;復現代碼時&#xff0c;確保 VS2022 使用 C17/20 標準以支持現代特性。 抽象與實現的解耦之道 1. 模式定義與用途?? 核心思想? ?橋接模式&#xff1a;將抽象部分與實現部分分離&#xff0c;使二者可以獨立變化。?關鍵用途&#xff1a; ?1.拆分復雜繼承…

在 Spring Boot 2.7.x 中引入 Kafka-0.9 的實踐

文章目錄 在 Spring Boot 2.7.x 中引入 Kafka-0.9 的實踐一、下載 Kafka-0.9二、啟動 Zookeeper 和 Kafka三、創建 Spring Boot 項目四、引入 kafka 依賴五、移除 Kafka 自動配置六、編寫 Kafka 生產者6.1 Kafka配置類6.2 生產者監聽類 七、編寫Controller發送Kafka八、驗證消費…

字符串中的數字之和

題目描述 程序要求能夠提取輸入的字符串中的數字&#xff0c;將數字累加&#xff0c;得到數字之和&#xff0c;如輸入的字符串為"abc76wet23er1.",應該提取數字76,23,1,求和后&#xff0c;即76231100。 輸入格式: 輸入一個字符串&#xff0c;字符串長度不超過100.…

77.ObservableCollection使用介紹1 C#例子 WPF例子

可觀察集合ObservableCollection using System; using System.Collections.ObjectModel;class Program {static void Main(){// 創建一個可觀察集合ObservableCollection<string> list new ObservableCollection<string>();// 注冊集合變化事件list.CollectionCh…

ORACLE 執行查詢語句慢(不走對應索引)

1. 索引未被創建或未正確創建 確保為查詢中涉及的列創建了索引。例如&#xff0c;如果你經常需要按column_name列進行查詢&#xff0c;確保已經為該列創建了索引,索引創建語句 CREATE INDEX idx_column_name ON table_name(column_name); 2、索引不可用 原因:索引可能被標記為不…

r1-reasoning-rag:一種新的 RAG 思路

最近發現了一個開源項目&#xff0c;它提供了一種很好的 RAG 思路&#xff0c;它將 DeepSeek-R1 的推理能力結合 Agentic Workflow 應用于 RAG 檢索 項目地址 https://github.com/deansaco/r1-reasoning-rag.git 項目通過結合 DeepSeek-R1、Tavily 和 LangGraph&#xff0c;實現…

服務器硬件配置統計

服務器型號和SN # dmidecode -t system | grep -E "Product Name|Serial Number" | awk -F: {print $2} PowerEdge R7515 4567CPU型號和物理CPU數量 echo "$(lscpu | grep "Model name" | cut -d : -f2 | sed s/^ *//) x $(lscpu | grep "Soc…

Hadoop、Spark、Flink Shuffle對比

一、Hadoop的shuffle 前置知識&#xff1a; Map任務的數量由Hadoop框架自動計算&#xff0c;等于分片數量&#xff0c;等于輸入文件總大小 / 分片大小&#xff0c;分片大小為HDFS默認值128M&#xff0c;可調 Reduce任務數由用戶在作業提交時通過Job.setNumReduceTasks(int)設…

Docker的常用鏡像

Docker的常用鏡像命令主要包括鏡像的查看、搜索、拉取、刪除、構建等操作&#xff0c;以下是綜合多個來源的總結&#xff1a; 一、基礎鏡像操作 查看本地鏡像 docker images? 顯示所有本地鏡像&#xff0c;包含倉庫名&#xff08;REPOSITORY&#xff09;、標簽&#xff08;TAG…

車載以太網測試-3【Wireshark介紹】

1 摘要 Wireshark 是一款開源的網絡協議分析工具&#xff0c;廣泛用于網絡故障排查、協議分析、網絡安全檢測等領域。它能夠捕獲網絡數據包&#xff0c;并以詳細的、可讀的格式顯示這些數據包的內容。廣泛應用于車載網絡測試&#xff0c;是車載網絡測試工程師必須掌握的工具。…

基于跨模態地圖學習的視覺語言導航

前言 本工作開展的背景&#xff1a; 人類和其他物種構建類似地圖的環境表示來完成尋路&#xff1a; &#xff08;1&#xff09;當人類只使用現成的駕駛或步行路徑到達目標時&#xff0c;構建認知地圖和獲取空間知識的能力就會下降&#xff1b; &#xff08;2&#xff09;另…

nodejs關于后端服務開發的探究

前提 在當前的環境中關于web server的主流開發基本上都是java、php之類的&#xff0c;其中java spring系列基本上占了大頭&#xff0c;而python之流也在奮起直追&#xff0c;但別忘了nodejs也是可以做這個服務的&#xff0c;只是位置有點尷尬&#xff0c;現在就來探究下nodejs…