外部訪問 Kubernetes 集群中 MQ 服務的方案

外部訪問 Kubernetes 集群中 MQ 服務的方案

當您在 Kubernetes 集群中部署了消息隊列服務(如 RabbitMQ、Kafka、ActiveMQ 等)后,以下是外部客戶端訪問這些服務的幾種可靠方法:

一、基礎訪問方案

1. NodePort 方式暴露服務

# MQ Service 示例 (RabbitMQ)
apiVersion: v1
kind: Service
metadata:name: rabbitmq-service
spec:type: NodePortports:- name: amqpport: 5672targetPort: 5672nodePort: 31672  # 手動指定或自動分配(30000-32767)selector:app: rabbitmq

訪問方式

amqp://<任一節點IP>:31672

優缺點

  • ? 簡單直接
  • ? 需手動管理端口和安全組
  • ? 不適合生產環境

2. LoadBalancer 方式(云環境)

spec:type: LoadBalancerports:- name: amqpport: 5672targetPort: 5672

訪問方式

amqp://<云服務商分配的LB_IP>:5672

云廠商差異

  • AWS: ELB/NLB
  • GCP: Cloud Load Balancing
  • Azure: Azure Load Balancer

二、生產級訪問方案

1. Ingress + TLS 終止(適合HTTP協議MQ)

# 適用于MQTT等HTTP兼容協議
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: mqtt-ingressannotations:nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:tls:- hosts:- mq.example.comsecretName: mq-tls-secretrules:- host: mq.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: mqtt-serviceport:number: 1883

2. 專用 Ingress Controller(如 EMQX Ingress)

# 使用EMQX專屬Ingress配置
apiVersion: apps.emqx.io/v1beta1
kind: Ingress
spec:rules:- host: mqtt.example.comhttp:paths:- backend:serviceName: emqx-serviceservicePort: 11883

三、高級網絡方案

1. 使用 Service Mesh (Istio)

# Gateway配置
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: mq-gateway
spec:selector:istio: ingressgatewayservers:- port:number: 31400name: tcp-mqprotocol: TCPhosts:- "*"
---
# VirtualService
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: mq-vs
spec:hosts:- "*"gateways:- mq-gatewaytcp:- match:- port: 31400route:- destination:host: rabbitmq-serviceport:number: 5672

2. 使用 NodePort + ExternalIPs

apiVersion: v1
kind: Service
metadata:name: kafka-external
spec:ports:- name: kafkaport: 9092targetPort: 9092selector:app: kafkaexternalIPs:- 203.0.113.10  # 集群節點的公有IPtype: ClusterIP

四、安全配置建議

1. 網絡策略限制

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: mq-access
spec:podSelector:matchLabels:app: rabbitmqingress:- from:- ipBlock:cidr: 192.168.1.0/24  # 只允許特定IP段訪問ports:- protocol: TCPport: 5672

2. TLS 加密配置(以RabbitMQ為例)

# 生成證書
kubectl create secret tls rabbitmq-tls \--cert=server.crt \--key=server.key \--namespace=mq
# StatefulSet 配置
env:
- name: RABBITMQ_SSL_CACERTFILEvalue: "/etc/ssl/ca.crt"
- name: RABBITMQ_SSL_CERTFILEvalue: "/etc/ssl/tls.crt"
- name: RABBITMQ_SSL_KEYFILEvalue: "/etc/ssl/tls.key"
volumeMounts:
- name: ssl-volumemountPath: /etc/ssl

五、客戶端連接示例

1. Python (pika) 連接示例

import pika# NodePort方式
connection = pika.BlockingConnection(pika.ConnectionParameters(host='<節點IP>',port=31672,credentials=pika.PlainCredentials('user', 'pass'),ssl=True  # 如果啟用了TLS)
)# LoadBalancer方式
connection = pika.BlockingConnection(pika.ConnectionParameters(host='<LB_DNS>',port=5672)
)

2. Kafka 客戶端配置

Properties props = new Properties();
props.put("bootstrap.servers", "kafka.example.com:9092"); // Ingress方式
props.put("security.protocol", "SSL");
props.put("ssl.truststore.location", "/path/to/truststore.jks");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);

六、監控與維護

1. 端口連通性測試

# AMQP協議測試
telnet <外部IP> 31672# Kafka測試
nc -zv <外部IP> 9092# MQTT測試
mosquitto_pub -h <外部IP> -p 1883 -t test -m "hello"

2. 性能監控

# Prometheus監控示例
annotations:prometheus.io/scrape: "true"prometheus.io/port: "15692"  # RabbitMQ Prometheus插件端口

選擇方案時需考慮:

  1. 協議支持:AMQP/Kafka/MQTT等協議差異
  2. 安全需求:TLS、認證授權機制
  3. 性能要求:吞吐量和延遲需求
  4. 云環境限制:不同云廠商的網絡特性

生產環境推薦組合方案:

  • 云環境:LoadBalancer + 網絡策略 + TLS
  • 混合云:Ingress Controller (專門配置) + 客戶端證書認證
  • 高安全要求:Service Mesh (Istio) 雙向TLS + 細粒度策略

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

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

相關文章

論文筆記(八十二)Transformers without Normalization

Transformers without Normalization 文章概括Abstract1 引言2 背景&#xff1a;歸一化層3 歸一化層做什么&#xff1f;4 動態 Tanh &#xff08;Dynamic Tanh (DyT)&#xff09;5 實驗6 分析6.1 DyT \text{DyT} DyT 的效率6.2 tanh \text{tanh} tanh 和 α α α 的消融實驗…

軟考中級-軟件設計師 操作系統(手寫筆記)

第一章&#xff1a;基礎知識 第二章&#xff1a;進程管理 狀態轉換圖 進程同步機制 信號量機制 信號量題 死鎖 第三章&#xff1a;存儲管理 基礎知識 分頁存儲管理 分段存儲管理 段頁式存儲管理 頁面置換算法 第四章&#xff1a;文件管理 基礎知識 索引分配 空閑存儲空間的管…

ubuntu 部署moodle

通過地址https://download.moodle.org/releases/latest/選擇下載&#xff0c;下載兩種壓縮包都特別慢&#xff08;有可能無法下載&#xff09;。 可以使用下面git下載項目 注意圖中php、mysql等版本要求&#xff0c;本次采用Ubuntu22.04下 nginxphp8.2mysql8.4部署 mkdir /var…

python實戰項目67:空氣質量在線檢測平臺js逆向

python實戰項目67:空氣質量在線檢測平臺js逆向 一、需求介紹二、完整代碼一、需求介紹 項目需求是獲取某個城市(以北京市為例)歷年(2013年12月至2025年4月)的空氣質量數據,字段包括日期、AQI、質量等級、PM2.5、PM10、NO2、CO、SO2等。改網站的網址是“https://www.aqis…

【Linux】記錄一個有用PS1

PS1 是用來定義shell提示符的環境變量 下面是一個帶有顏色和豐富信息的 Linux PS1 配置示例&#xff0c;包含用戶名、主機名、路徑、時間、Git 分支和退出狀態提示&#xff1a; # 添加到 ~/.bashrc 文件末尾 PS1\[\e[1;32m\]\u\[\e[m\] # 綠色粗體用戶名 PS…

Python PyTorch庫【機器學習框架】全面深入講解與實踐

一、PyTorch 核心概念 1. 定義與發展背景 PyTorch 是由 Facebook AI Research (FAIR) 開發的開源機器學習框架&#xff0c;2016 年首次發布。其核心特性包括&#xff1a; 動態計算圖&#xff08;Define-by-Run&#xff09;GPU 加速張量計算自動微分系統豐富的神經網絡模塊 …

呼叫中心座席管理系統:智能升級,高效服務

在數字化轉型加速的今天&#xff0c;客戶服務體驗已成為企業競爭力的核心要素。傳統 呼叫中心系統 依賴硬件設備、人工操作的模式已無法滿足高效、智能、靈活的現代企業需求。暢信達呼叫中心 座席管理系統 V5.0應運而生&#xff0c;以WEBRTC軟電話接入、智能座席輔助、知識庫管…

時態--00--總述

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 時態句子結構時態標志詞 時態 句子結構 時態標志詞

算法每日一題 | 入門-順序結構-字母轉換

字母轉換 題目描述 輸入一個小寫字母&#xff0c;輸出其對應的大寫字母。例如輸入 q[回車] 時&#xff0c;會輸出 Q。 輸入格式 無 輸出格式 無 輸入輸出樣例 #1 輸入 #1 q輸出 #1 QC 首先我們要知道&#xff0c;C字符的所有轉換形式都是依照ASCII碼來的。 所以&…

晶振:從消費電子到航天領域的時間精度定義者

從手表到衛星&#xff1a;晶振如何在不同領域定義時間精度 在時間的長河中&#xff0c;人類對時間精度的追求永無止境。從古老的日晷到如今精密的計時儀器&#xff0c;每一次進步都離不開技術的革新。而晶振&#xff0c;作為現代計時的核心元件&#xff0c;在不同領域發揮著至…

短視頻矩陣系統貼牌開發實戰:批量剪輯文件夾功能設計與實現

摘要&#xff1a;在短視頻矩陣系統的開發中&#xff0c;批量處理功能是提升運營效率的關鍵。本文將深入探討如何實現基于文件夾的短視頻批量剪輯功能&#xff0c;涵蓋技術選型、核心功能實現及代碼示例。 一、需求背景與場景價值 在短視頻矩陣運營場景中&#xff0c;運營者常面…

讀書筆記--華為從偶然到必然之創新與技術開發閱讀有感

最近繼續閱讀一本講述華為研發投資與管理實踐方面的書籍&#xff0c;分享給大家。華為在創新與技術研發方面有體系化、系統化和延續性。創新是企業的生命線&#xff0c;是企業發展的不竭動力&#xff0c;同時將企業文化與創新精神進行了融合&#xff0c;華為的企業文化強調以客…

基于DeepSeek與HTML的可視化圖表創新研究

一、研究背景 在當今數字化時代&#xff0c;數據呈指數級增長&#xff0c;廣泛滲透于社會各個領域。無論是商業運營、科學研究&#xff0c;還是公共管理等方面&#xff0c;海量數據蘊含著豐富的潛在價值&#xff0c;成為驅動決策優化、推動業務發展、促進科學創新的關鍵要素。數…

K8S - 命名空間實戰 - 從資源隔離到多環境管理

引言 在傳統的物理機或虛擬機環境中&#xff0c;不同業務應用共享資源&#xff0c;容易導致權限沖突、資源爭用和管理混亂。Kubernetes 通過 命名空間&#xff08;Namespace&#xff09;實現資源邏輯隔離&#xff0c;將集群劃分為多個虛擬子集群&#xff0c;從而解決以下問題&…

Unity3D仿星露谷物語開發40之割草動畫

1、目標 當Player選擇Scythe后&#xff0c;鼠標懸浮在草上&#xff0c;會顯示綠色光標。鼠標左擊&#xff0c;會觸發割草的動畫。 2、優化Settings.cs腳本 添加以下兩行代碼&#xff1a; // Reaping&#xff08;收割&#xff09; public const int maxCollidersToTestPerRe…

【LLM】基于 Ollama 部署 DeepSeek-R1 本地大模型

本文詳細介紹如何在 Linux 和 Windows 環境下,通過 Docker Compose 整合 Ollama 和 Open WebUI,部署 DeepSeek-R1 大語言模型,并提供 GPU 加速支持。無論你是開發者還是 AI 愛好者,均可通過本指南快速搭建私有化 GPT 環境。 一、環境準備 1. Docker 與 Docker Compose 安…

深度體驗兩年半!MAC 硬件好物分享|屏幕、掛燈、鍵盤、鼠標

寫在前面 最近快五一放假了&#xff0c;所以寫點輕松一點的文章&#xff5e; 這篇文章就介紹這兩年半來&#xff0c;我一直在用MAC硬件搭子&#xff01;&#xff01;而買這些硬件設備的錢都是一行行代碼寫出來的!! 我的MAC是21款14寸 m1 pro 32512版本&#xff0c;22年年底在…

Python math 庫教學指南

Python math 庫教學指南 一、概述 math 庫是 Python 標準庫中用于數學運算的核心模塊&#xff0c;提供以下主要功能&#xff1a; 數學常數&#xff08;如 π 和 e&#xff09;基本數學函數&#xff08;絕對值、取整等&#xff09;冪與對數運算三角函數雙曲函數特殊函數&…

Mac下安裝Python3,并配置環境變量設置為默認

下載Python 訪問Python官方網站 https://www.python.org/ 首先獲得python3安裝路徑 執行命令&#xff1a; which python3 以我這臺電腦為例&#xff0c;路徑為&#xff1a;/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 編輯 bash_profile 文件 然后用 vim 打…

Arduino程序結構詳解與嵌入式開發對比指南

Arduino編程詳解&#xff1a;從基礎到進階實踐 一、Arduino程序的核心架構與擴展設計 1.1 程序框架的深度解析 Arduino程序的基石setup()和loop()函數構成了整個開發體系的核心邏輯。這兩個函數的設計哲學體現了嵌入式系統開發的兩個關鍵維度&#xff1a; 初始化階段&#…