欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

K8S環(huán)境下如何驗證RocketMQ擴縮容

 更新時間:2025年01月02日 09:05:50   作者:萊特昂  
文章主要內容驗證了K8S環(huán)境下RocketMQ的擴縮容特性,包括序號變化、命名規(guī)則以及節(jié)點重建后序號保持不變,StatefulSet確保Pod序號在重建后保持穩(wěn)定,而Deployment創(chuàng)建的Pod名稱是隨機的

背景

想驗證一些K8S環(huán)境下RocketMQ擴縮容時的表現(xiàn)和特性,比如序號是否改變?命名規(guī)則是怎樣的?刪除和新增節(jié)點后序號怎么變化?

Broker

修改yaml中replicas擴容

delete刪除節(jié)點,觀察能否縮容,以及序號的變化

其中,節(jié)點被重建,且序號保持原序號。

kubectl scale指令擴縮容

kubectl scale 命令,它是 kubectl set 命令的一個特例,專門用于修改資源的副本數(shù)量。

kubectl scale statefulsets rocketmq-broker-master --replicas=1 -n rocketmq
  • 從2個master節(jié)點縮容為1個:

  • 從2個master節(jié)點擴容為5個:

其中,可以看到擴容的過程是依次擴容,而非同時擴。

運行delete yaml指令后,所有broker節(jié)點均被刪除

POD name序號變化和重啟保持不變的原理

StatefulSet控制器創(chuàng)建的Pod副本會自動加上序號后綴。Pod的序號是按照它們被創(chuàng)建的順序分配的,從0開始遞增。StatefulSet特性摘抄:

  • 順序性:Pod的序號是按照它們被創(chuàng)建的順序分配的,從0開始遞增。 唯一性:每個Pod的名稱在其整個生命周期中都是唯一的。
  • 穩(wěn)定性:StatefulSet確保Pod的序號在Pod重新調度或重建后保持不變,這是通過StatefulSet的Pod管理策略(OrderedReady或Parallel)來實現(xiàn)的。

一旦apply StatefulSet.yaml后,手動delete掉POD,POD會被重建。想徹底刪除節(jié)點只能通過delete yaml的方式。

brokerName通過configmap從POD name中取序號后拼接broker-g。

configmap中這部分代碼:

  broker_name_seq=${HOSTNAME##*-}
  if [ -n "$MY_POD_NAME" ]; then
    broker_name_seq=${MY_POD_NAME##*-}
  fi
  update_broker_conf "brokerName" "broker-g${broker_name_seq}"

其中,取POD的-尾部序號作為broker_name_seq,與broker-g拼接作為brokerName。

(去除了yaml中共享存儲的pvc掛載,由于測試需要手動構造本地相同目錄的PVC,無法使用SC動態(tài)創(chuàng)建,會影響自動擴縮容。)

Proxy

proxy節(jié)點從2到4擴容

proxy由Deployment控制器創(chuàng)建,是無狀態(tài)的。其創(chuàng)建的pod名稱是沒有序號連續(xù)的。

通過delete刪除后也會重建新的pod name

proxy節(jié)點縮容,從4到2,發(fā)現(xiàn)雖然POD名稱是隨機的,但縮容也會按照新創(chuàng)建先縮容:

Deployment Pod name命名規(guī)則原理:

  • 隨機名稱:每個Pod的名稱是由Kubernetes隨機生成的,通常是一個五字符的隨機字符串,這些字符可能是字母和數(shù)字的組合。
  • 名稱唯一性:盡管名稱是隨機生成的,但Kubernetes確保在同一個命名空間內每個Pod的名稱是唯一的。
  • 標簽一致性:盡管Pod名稱是隨機的,但Pod的標簽(labels)是一致的,并且與Deployment的標簽選擇器(selector)相匹配。這意味著你可以通過Deployment的標簽選擇器來管理和引用相關的Pod。
  • 重啟和重建:如果Pod由于任何原因(例如,縮放、更新、節(jié)點故障等)被重啟或重建,新創(chuàng)建的Pod將獲得一個新的隨機名稱。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 基于Spring實現(xiàn)零重啟自由編排任務的定時管理器

    基于Spring實現(xiàn)零重啟自由編排任務的定時管理器

    我們發(fā)現(xiàn),我們使用Spring自帶的定時任務如果要有修改,那么就要修改代碼,然后重啟項目,所以本文就帶大家實現(xiàn)一個零重啟自由編排任務的定時管理器吧
    2023-07-07
  • java中給實體對象屬性的空值賦默認值

    java中給實體對象屬性的空值賦默認值

    這篇文章主要介紹了java中給實體對象屬性的空值賦默認值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java開發(fā)之普通web項目轉為Maven項目的方法

    Java開發(fā)之普通web項目轉為Maven項目的方法

    這篇文章主要給大家介紹了關于Java開發(fā)之普通web項目轉為Maven項目的相關資料,文中通過圖文將轉換的方法步驟介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • Java使用OCR技術識別驗證碼實現(xiàn)自動化登陸方法

    Java使用OCR技術識別驗證碼實現(xiàn)自動化登陸方法

    在本篇文章里小編給大家分享的是關于Java 如何使用 OCR 技術識別驗證碼實現(xiàn)自動化登陸的相關知識點內容,需要的朋友們學習下。
    2019-08-08
  • Spring通過配置文件管理Bean對象的方法

    Spring通過配置文件管理Bean對象的方法

    這篇文章主要介紹了Spring通過配置文件管理Bean對象的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Java 并發(fā)編程的可見性、有序性和原子性

    Java 并發(fā)編程的可見性、有序性和原子性

    這篇文章主要介紹了Java 并發(fā)編程的可見性、有序性和原子性的相關資料,幫助大家更好的理解和學習Java并發(fā)編程,感興趣的朋友可以了解下。
    2020-11-11
  • 在Java中動態(tài)執(zhí)行字符串代碼的方法小結

    在Java中動態(tài)執(zhí)行字符串代碼的方法小結

    在Java編程中,靜態(tài)編譯的特性通常不允許我們直接執(zhí)行運行時生成的代碼,然而,有時我們需要動態(tài)地生成并執(zhí)行代碼片段,本文將詳細介紹如何在Java中運行一段字符串代碼,并提供詳細的代碼案例和運行結果,需要的朋友可以參考下
    2024-08-08
  • MyBatis中如何接收String類型的參數(shù)實現(xiàn)

    MyBatis中如何接收String類型的參數(shù)實現(xiàn)

    這篇文章主要介紹了MyBatis中如何接收String類型的參數(shù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • java ConcurrentHashMap分段加鎖提高并發(fā)效率

    java ConcurrentHashMap分段加鎖提高并發(fā)效率

    這篇文章主要為大家介紹了java ConcurrentHashMap分段加鎖提高并發(fā)效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • SpringBoot統(tǒng)計接口請求耗時的方法詳解

    SpringBoot統(tǒng)計接口請求耗時的方法詳解

    接口請求時間的快慢就代表著獲取到對應的數(shù)據(jù)的快慢,也代表著用戶請求頁面數(shù)據(jù)的快慢,常??梢越柚涌谡埱罂炻M行相應的優(yōu)化,本文給大家介紹了SpringBoot統(tǒng)計接口請求耗時的方法,需要的朋友可以參考下
    2024-12-12

最新評論