Kafka+Zookeeper從docker部署到spring boot使用完整教程

文章目錄

  • 一、Kafka
      • 1.Kafka核心介紹:
        • ?核心架構
        • ?核心特性
        • ?典型應用
      • 2.Kafka對 ZooKeeper 的依賴:
      • 3.去 ZooKeeper 的演進之路:
      • 注:(本文采用ZooKeeper3.8 + Kafka2.8.1)
  • 二、Zookeeper
      • 1.核心架構與特性
      • 2.典型應用場景
      • 3.優勢與局限
  • 三、Zookeeper安裝部署
    • 1.拉取鏡像
    • 2.創建數據卷
    • 3.創建容器
    • 4.Zookeepe可視化工具-prettyZoo下載和安裝
    • 5.prettyZoo使用
  • 四、Kafka安裝部署
    • 1.拉取鏡像
    • 2.創建數據卷
    • 3.創建容器
    • 4.Kakfa可視化操作工具kafka-ui安裝
      • 4.1、拉鏡像
      • 4.2、創建容器
      • 4.3、訪問kafka-ui
    • 5.Kakfa可視化操作工具kafka-ui使用
  • 五、Spring Boot使用Kafka
    • 1.pom文件引入關鍵jar
    • 2.yml文件引入配置
    • 3.Topic配置
    • 4.消息體創建
    • 5.Producer實現
    • 6.Consumer實現
    • 7.啟動類配置
    • 8.Controller測試發送
    • 9.測試驗證
  • 總結

一、Kafka

kafka官方文檔

1.Kafka核心介紹:

Apache Kafka 是由 ?Apache 軟件基金會開發的開源分布式流處理平臺,最初由 LinkedIn 團隊設計,旨在解決大規模實時數據管道問題。其核心功能是作為高吞吐、低延遲的分布式發布-訂閱消息系統,支持每秒百萬級消息處理能力。

?核心架構

?Topic(主題)?:消息的邏輯分類,生產者按主題發布數據,消費者按主題訂閱。
?Partition(分區)?:每個主題劃分為多個分區,實現數據并行處理和水平擴展。
?Broker(代理)?:Kafka 集群中的服務節點,負責存儲和路由消息。
?Producer/Consumer:生產者推送消息至 Broker,消費者從 Broker 拉取數據,支持消費者組(Consumer Group)實現負載均衡。

?核心特性

?持久化與高可靠:消息持久化到磁盤,通過多副本機制(Replication)保障數據容錯。
?水平擴展:通過分區和 Broker 動態擴容,支持萬級節點和 PB 級數據存儲。
?實時流處理:與 Spark、Flink 等框架集成,支持實時計算、日志聚合、監控報警等場景。

?典型應用

?日志收集:統一收集多源日志,供離線分析或實時監控。
?消息隊列:解耦系統組件,如電商訂單與庫存服務異步通信。
?實時推薦:基于用戶行為流(如點擊、搜索)實時生成個性化推薦。
?數據管道:作為 CDC(變更數據捕獲)工具,同步數據庫變更至數據湖或搜索引擎。
Kafka 憑借其高性能和靈活性,已成為大數據生態的核心組件,適用于金融、物聯網、電商等領域的實時數據處理需求。

2.Kafka對 ZooKeeper 的依賴:

Apache Kafka 在 ?4.0 版本之前 高度依賴 ZooKeeper,主要用于集群元數據管理(如 Broker 注冊、Topic 分區分配)、控制器選舉、消費者偏移量存儲(舊版本)等核心功能。ZooKeeper 作為分布式協調服務,承擔了 Kafka 集群的“大腦”角色,但存在運維復雜、性能瓶頸(如萬級分區下元數據同步延遲)等問題。

3.去 ZooKeeper 的演進之路:

?Kafka 2.8.0(2021年):?
首次引入 ?KRaft 模式(KIP-500)?,作為實驗性功能,允許用戶通過 KRaft 協議替代 ZooKeeper 管理元數據。但此時仍需 ZooKeeper 作為過渡支持,且未默認啟用。
?Kafka 3.3.x(2022年):?
KRaft 模式逐步穩定,支持生產環境部署,但仍需用戶手動配置切換模式。
?Kafka 4.0.0(2025年3月18日發布):?
?正式移除對 ZooKeeper 的依賴,默認僅支持 KRaft 模式。用戶無法再以 ZooKeeper 模式啟動集群,需通過 KRaft 完成元數據管理和控制器選舉。

注:(本文采用ZooKeeper3.8 + Kafka2.8.1)

我們本文還是使用kafka+zookeeper結合的方式來學習Kafka,在學習kafka的同時也能學習到zookeeper的使用,現在大部分公司還都在使用這種方式。


二、Zookeeper

Zookeeper官網

ZooKeeper 是一款由雅虎開源的分布式協調服務框架,旨在為分布式系統提供高效、可靠的一致性服務。其核心功能包括配置管理、分布式鎖、服務注冊與發現等,廣泛應用于大數據和微服務領域(如 Kafka、HBase、Dubbo)。

1.核心架構與特性

數據模型
采用樹形結構的 ?ZNode?(數據節點)存儲數據,每個節點可保存數據并包含子節點,類似于文件系統。節點分為四類:
?持久節點:長期存在,需手動刪除
?臨時節點:會話結束自動刪除
?順序節點:自動追加全局唯一序號,適用于分布式隊列

?一致性保障
基于 ?ZAB(ZooKeeper Atomic Broadcast)協議,確保數據順序一致性、原子性和可靠性。通過 ?Leader 選舉機制?(半數以上節點投票)實現高可用,集群需奇數節點(如 3、5 臺)以防止腦裂。

動態監聽(Watcher)?
客戶端可監聽節點變化(數據修改、子節點增減),觸發事件通知實現實時響應。

2.典型應用場景

?配置管理:集中存儲配置信息,動態推送到所有服務節點
?分布式鎖:通過臨時順序節點實現互斥資源訪問
?服務注冊與發現:如 Dubbo 使用 ZooKeeper 維護全局服務地址列表
?集群管理:監控節點狀態,自動處理故障切換

3.優勢與局限

?優勢:簡化分布式系統開發,提供高性能(內存存儲)和強一致性
?局限:不適用于海量數據存儲,寫性能受集群規模限制

ZooKeeper 通過封裝復雜的一致性算法,成為分布式系統的“基礎設施”,尤其適用于需要協調與狀態同步的場景。


三、Zookeeper安裝部署

1.拉取鏡像

docker pull zookeeper:3.8

在這里插入圖片描述

2.創建數據卷

創建數據卷,方便數據持久化

docker volume create zk-data
docker volume create zk-datalog
docker volume create zk-logs

在這里插入圖片描述

3.創建容器

創建zookeeper-test容器,同時掛載數據卷和并指定端口映射(2181)

docker run -d --name zookeeper-test -p 2181:2181 \--env ZOO_MY_ID=1 \-v zk-data:/data \-v zk-datalog:/datalog \-v zk-logs:/logs \zookeeper:3.8

在這里插入圖片描述

4.Zookeepe可視化工具-prettyZoo下載和安裝

PrettyZoo 是一款基于 ?Apache Curator 和 ?JavaFX 開發的開源 Zookeeper 圖形化管理客戶端,專為簡化 Zookeeper 運維設計。其核心功能包括:
?多平臺支持:提供 Windows(msi)、Mac(dmg)、Linux(deb/rpm)安裝包,無需額外安裝 Java 運行時即可運行;
?可視化操作:支持節點增刪改查(CRUD)、實時數據同步、ACL 權限配置、SSH 隧道連接,以及 JSON/XML 數據格式化與高亮顯示;
?命令行集成:內置終端支持 80% 的 Zookeeper 命令,并可直接執行四字命令(如 stat、ruok 等)監控集群狀態;
?多集群管理:可同時連接多個 Zookeeper 服務器,支持配置導入導出,提升運維效率。

該工具界面簡潔美觀,適合開發測試及中小規模環境,大幅降低 Zookeeper 的操作復雜度。

GitHub下載地址

我這里是在windows上下載使用,所以選擇windows版本。

在這里插入圖片描述

安裝很簡單,傻瓜式安裝即可,沒有特殊配置。
在這里插入圖片描述
在這里插入圖片描述

5.prettyZoo使用

填寫IP和端口進行連接。

在這里插入圖片描述
在這里插入圖片描述

連接成功后,目錄結構就能看到了,可以直接在工具上創建和刪除節點。還可以編寫命令進行操作。工具使用就簡單介紹一下,感興趣的同學可以下載玩一玩。
在這里插入圖片描述
在這里插入圖片描述


四、Kafka安裝部署

1.拉取鏡像

wurstmeister/kafka 適合開發/測試,但生產環境建議使用官方或企業版(如 Confluent)。

2.13-2.8.1 代表Kafka 依賴的 ?Scala 版本為2.13,kafka自身的版本為2.8.1。

docker pull wurstmeister/kafka:2.13-2.8.1

在這里插入圖片描述

2.創建數據卷

創建數據卷,方便數據持久化

docker volume create kafka_vol

在這里插入圖片描述

3.創建容器

創建kafka-test容器,同時掛載數據卷和并指定端口映射(9092),并將zookeeper-test鏈接到該容器,使Kafka可以成功訪問到zookeeper-test,Kafka相關參數通過環境變量(—env)設置。

docker run -d --name kafka-test -p 9092:9092 \
--link zookeeper-test \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper-test:2181 \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.75.130 \
--env KAFKA_ADVERTISED_PORT=9092  \
--env KAFKA_LOG_DIRS=/kafka/logs \
-v kafka_vol:/kafka  \
wurstmeister/kafka:2.13-2.8.1

在這里插入圖片描述

4.Kakfa可視化操作工具kafka-ui安裝

Kafka-UI 是一款開源的 Web 可視化工具,專為管理和監控 Apache Kafka 集群設計,提供輕量、高效的運維體驗。它支持多集群統一管理,可實時查看集群狀態(如 Broker、Topic、分區和消費者組詳情),并支持消息瀏覽(JSON、純文本、Avro 格式)。用戶可通過界面動態配置 Topic,管理消費者偏移量,并集成數據脫敏、權限控制等功能。其部署靈活,支持 Docker、Kubernetes 等多種方式,適合開發測試及中小規模生產環境,大幅降低 Kafka 的運維復雜度

4.1、拉鏡像

docker pull provectuslabs/kafka-ui

在這里插入圖片描述

4.2、創建容器

docker run -it --name kafka-ui -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui

在這里插入圖片描述

4.3、訪問kafka-ui

訪問地址為你部署的服務器地址:http://localhost:8080/ (http://192.168.75.130:8080/)
在這里插入圖片描述

5.Kakfa可視化操作工具kafka-ui使用

創建連接:
在這里插入圖片描述

連接后可以查看Brokers、Consumers,可以操作Topics,可以查看消息,也可以模擬Produce生產消息等等。詳細操作功能就不再描述了,各位同學可以自行部署嘗試。
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述


五、Spring Boot使用Kafka

因為kafka部署的是2.8.1,需要對應Spring boot 2.7.x系列,我這里使用spring boot 2.7.6進行案例。

1.pom文件引入關鍵jar

    <properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--    spring boot版本    --><spring-boot.version>2.7.6</spring-boot.version><!--    kafka版本    --><spring-kafka.version>2.8.1</spring-kafka.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Kafka 核心依賴 --><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>${spring-kafka.version}</version></dependency><!-- Lombok 簡化代碼 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- JSON 序列化支持 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.3</version></dependency></dependencies>

2.yml文件引入配置

spring:kafka:# 集群地址(多個用逗號分隔)bootstrap-servers: 192.168.75.130:9092# 生產者配置producer:key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.springframework.kafka.support.serializer.JsonSerializerretries: 3 # 失敗重試次數acks: all # 確保消息可靠投遞batch-size: 16384 # 批量發送優化# 消費者配置consumer:group-id: demo-group # 消費組IDauto-offset-reset: earliestkey-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.springframework.kafka.support.serializer.JsonDeserializerenable-auto-commit: false # 手動提交偏移量properties:spring.json.trusted.packages: "*" # 允許反序列化任意包# 監聽器配置listener:ack-mode: MANUAL # 手動ACKconcurrency: 3 # 消費線程數# 自定義主題名稱
kafka:topic:demo: demo-topic

3.Topic配置

@Configuration
public class KafkaTopicConfig {@Value("${kafka.topic.demo}")private String demoTopic;@Beanpublic NewTopic demoTopic() {return TopicBuilder.name(demoTopic)// 分區數.partitions(3)// 副本數.replicas(1).config(TopicConfig.RETENTION_MS_CONFIG, "604800000") // 保留7天.build();}
}

4.消息體創建

@Data
@AllArgsConstructor
@NoArgsConstructor
public class DemoMessage {private String id;// 內容private String content;// 時間戳private LocalDateTime timestamp;
}

5.Producer實現

@Slf4j
@Service
public class KafkaProducerService {private final KafkaTemplate<String, Object> kafkaTemplate;@Autowiredpublic KafkaProducerService(KafkaTemplate<String, Object> kafkaTemplate) {this.kafkaTemplate = kafkaTemplate;}// 發送消息(支持回調)public void sendMessage(String topic, DemoMessage message) {// 普通發送消息(支持回調)kafkaTemplate.send(topic, message.getId(), message).addCallback(success -> {if (success != null) {log.info("發送成功: Topic={}, Offset={}",success.getRecordMetadata().topic(),success.getRecordMetadata().offset());}},ex -> log.error("發送失敗: {}", ex.getMessage()));// 事務性發送消息(支持回調)
//        kafkaTemplate.executeInTransaction(operations -> {
//            operations.send(topic, message.getId(), message)
//                    .addCallback(
//                            success -> {
//                                if (success != null) {
//                                    log.info("發送成功: Topic={}, Offset={}",
//                                            success.getRecordMetadata().topic(),
//                                            success.getRecordMetadata().offset());
//                                }
//                            },
//                            ex -> log.error("發送失敗: {}", ex.getMessage())
//                    );
//            return true;
//        });}
}

6.Consumer實現

@Slf4j
@Service
public class KafkaConsumerService {@KafkaListener(topics = "${kafka.topic.demo}", groupId = "demo-group")public void consumeMessage(@Payload DemoMessage message, Acknowledgment ack) {try {log.info("收到消息: Content={}", message.getContent());// 冪等處理if (isMessageProcessed(message.getId())) {log.warn("消息已處理: ID={}", message.getId());ack.acknowledge();return;}// 業務處理// ...// 手動提交偏移量ack.acknowledge();} catch (Exception e) {log.error("處理異常: {}", e.getMessage());}}private boolean isMessageProcessed(String messageId) {// 實現冪等檢查(如查數據庫)return false;}
}

7.啟動類配置

@EnableKafka
@SpringBootApplication
public class MyKafkaApplication {public static void main(String[] args) {SpringApplication.run(MyKafkaApplication.class, args);}}

8.Controller測試發送

@RestController
@RequestMapping("/kafka")
public class kafakTestController {@Autowiredprivate KafkaProducerService producerService;@RequestMapping("/sendMessage")public String sendMessage(@RequestParam(value = "message") String message) {DemoMessage message1 = new DemoMessage(UUID.randomUUID().toString(),message,LocalDateTime.now());producerService.sendMessage("demo-topic", message1);return "消息發送成功!";}
}

9.測試驗證

模擬生產者生產消息,驗證生產者和消費者是否正常工作。測試可用。
在這里插入圖片描述
在這里插入圖片描述


總結

總結了kafka使用的完整教程,加強一下自己對于kafka的整體概念,給想使用kafka的同學們入個門。

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

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

相關文章

JUC系列JMM學習之隨筆

JUC: JUC 是 Java 并發編程的核心工具包,全稱為 Java Util Concurrent,是 java.util.concurrent 包及其子包的簡稱。它提供了一套強大且高效的并發編程工具,用于簡化多線程開發并提高性能。 CPU核心數和線程數的關系:1核處理1線程(同一時間單次) CPU內核結構: 工作內…

The Rust Programming Language 學習 (九)

泛型 每一個編程語言都有高效處理重復概念的工具。在 Rust 中其工具之一就是 泛型&#xff08;generics&#xff09;。泛型是具體類型或其他屬性的抽象替代。我們可以表達泛型的屬性&#xff0c;比如他們的行為或如何與其他泛型相關聯&#xff0c;而不需要在編寫和編譯代碼時知…

藍橋杯 混乘數字

問題描述 混乘數字的定義如下&#xff1a; 對于一個正整數 n&#xff0c;如果存在正整數 a 和 b&#xff0c;使得&#xff1a; n a b且 a 與 b 的十進制數位中每個數字出現的次數之和&#xff0c;與 n 中對應數字出現的次數相同&#xff0c;則稱 n 為混乘數字。 示例 對于…

CExercise04_1位運算符_2 定義一個函數判斷給定的正整數是否為2的冪

題目&#xff1a; 給定一個正整數&#xff0c;請定義一個函數判斷它是否為2的冪(1, 2, 4, 8, 16, …) 分析&#xff1a; &#xff1a; 代碼 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdbool.h>/* 給定一個正整數&#xff0c;請定義一個函數…

SSL證書不可信的原因有哪些?(國科云)

SSL證書用于在客戶端和服務器端之間建立一條加密通道&#xff0c;確保數據在傳輸過程中的安全性和完整性。然而&#xff0c;在實際應用中&#xff0c;我們有時會遇到SSL證書不可信的情況&#xff0c;嚴重影響了用戶對網站的信任度。那么&#xff0c;SSL證書不可信的原因究竟有哪…

[王陽明代數講義]琴語言類型系統工程特性

琴語言類型系統工程特性 層展物理學組織實務與藝術與琴生生.物機.械科.技工.業研究.所軟凝聚態物理開發工具包社會科學氣質砥礪學人生意氣場社群成員魅力場與心氣微積分社會關系力學 意氣實體過程圖論信息編碼&#xff0c;如來碼導引 注意力機制道裝Transformer架構的發展標度律…

自抗擾ADRC之二階線性擴展狀態觀測器(LESO)推導

1.龍伯格觀測器 實際工程應用中&#xff0c;狀態變量有時難以使用傳感器直接測量&#xff0c;在這種情況下&#xff0c;使用狀態觀測器估計系統實際狀態是非常常見的做法。最出名的狀態觀測器當屬龍伯格博士在1971年發表于TAC的An Introduction to Observer[1]一文中提出的基于…

從頭開發一個Flutter插件(二)高德地圖定位插件

開發基于高德定位SDK的Flutter插件 在上一篇文章里具體介紹了Flutter插件的具體開發流程&#xff0c;從創建項目到發布。接下來將為Flutter天氣項目開發一個基于高德定位SDK的Flutter定位插件。 申請key 首先進入高德地圖定位SDK文檔內下載定位SDK&#xff0c;并按要求申請A…

分布式鎖之redis6

一、分布式鎖介紹 之前我們都是使用本地鎖&#xff08;synchronize、lock等&#xff09;來避免共享資源并發操作導致數據問題&#xff0c;這種是鎖在當前進程內。 那么在集群部署下&#xff0c;對于多個節點&#xff0c;我們要使用分布式鎖來避免共享資源并發操作導致數據問題…

ubuntu中使用安卓模擬器

本文這里介紹 使用 android studio Emulator &#xff0c; 當然也有 Anbox (Lightweight)&#xff0c; Waydroid (Best for Full Android Experience), 首先確保自己安裝了 android studio &#xff1b; sudo apt update sudo apt install openjdk-11-jdk sudo snap install…

二語習得理論(Second Language Acquisition, SLA)如何學習英語

二語習得理論&#xff08;Second Language Acquisition, SLA&#xff09;是研究學習者如何在成人或青少年階段學習第二語言&#xff08;L2&#xff09;的理論框架。該理論主要關注語言習得過程中的認知、社會和文化因素&#xff0c;解釋了學習者如何從初學者逐漸變得流利并能夠…

WinDbg. From A to Z! 筆記(下)

原文鏈接: WinDbg. From A to Z! 文章目錄 使用WinDbg臨界區相關命令示例 -- 查看臨界區其他有用的命令 WinDbg中的偽寄存器自動偽寄存器 WinDbg中的表達式其他操作默認的表達式計算方式 WinDbg中的重命名調試器命令語言編程控制流命令程序執行 WinDbg 遠程調試事件監控WinDbg …

RainbowDash 的旅行

D RainbowDash 的旅行 - 第七屆校賽正式賽 —— 補題 題目大意&#xff1a; 湖中心有一座島&#xff0c;湖的外圍有 m m m 間木屋&#xff08;圍繞小島&#xff09; &#xff0c;第 i i i 間木屋和小島之間有 a i a_i ai? 座 A A A 類橋&#xff0c; b i b_i bi? 座 B …

MySQL-SQL-DDL語句、表結構創建語句

一.SQL SQL&#xff1a;一門操作關系型數據庫的編程語言&#xff0c;定義操作所有關系型數據庫的統一標準 二. DDL-數據庫 1. 查詢所有數據庫 命令&#xff1a;show databases; 2. 查詢當前數據庫 命令&#xff1a;select database(); 3. 創建數據庫 命令&#xff1a;create da…

Sora結構猜測

方案&#xff1a;VAE Encoder&#xff08;視頻壓縮&#xff09; -> Transform Diffusion &#xff08;從視頻數據中學習分布&#xff0c;并根據條件生成新視頻&#xff09; -> VAE Decoder &#xff08;視頻解壓縮&#xff09; 從博客出發&#xff0c;經過學術Survey&am…

TortoiseSVN設置忽略清單

1.TortoiseSVN > Properties&#xff08;如果安裝了 TortoiseSVN&#xff09;。 2. 在彈出的屬性窗口中&#xff0c;點擊 New > Other。 4. 在 Property name 中輸入 svn:ignore 。 5. 在 Property value 中輸入要忽略的文件夾或文件名稱&#xff0c;例如&#xff1a; #…

深入解析Java哈希表:從理論到實踐

哈希表&#xff08;Hash Table&#xff09;是計算機科學中最重要的數據結構之一&#xff0c;也是Java集合框架的核心組件。本文將以HashMap為切入點&#xff0c;深入剖析Java哈希表的實現原理、使用技巧和底層機制。 一、哈希表基礎原理 1. 核心概念 鍵值對存儲&#xff1a;通…

leetcode:1582. 二進制矩陣中的特殊位置(python3解法)

難度&#xff1a;簡單 給定一個 m x n 的二進制矩陣 mat&#xff0c;返回矩陣 mat 中特殊位置的數量。 如果位置 (i, j) 滿足 mat[i][j] 1 并且行 i 與列 j 中的所有其他元素都是 0&#xff08;行和列的下標從 0 開始計數&#xff09;&#xff0c;那么它被稱為 特殊 位置。 示…

《數字圖像處理》教材尋找合作者

Rafael Gonzalez和Richard Woods所著的《數字圖像處理》關于濾波器的部分幾乎全錯&#xff0c;完全從零開始寫&#xff0c;困難重重。關于他的問題已經描述在《數字圖像處理&#xff08;面向新工科的電工電子信息基礎課程系列教材&#xff09;》。 現尋找能夠共同討論、切磋、…

為 Jenkins Agent 添加污點(Taint)容忍度(Toleration)

在 Kubernetes&#xff08;k8s&#xff09;環境中使用 Jenkins 時&#xff0c;為 Jenkins Agent 添加污點&#xff08;Taint&#xff09;容忍度&#xff08;Toleration&#xff09;是一種常見的配置操作&#xff0c;它允許 Jenkins Agent Pod 被調度到帶有特定污點的節點上。下…