Kubernetes 服務發現與健康檢查詳解

Kubernetes 提供了多種機制來管理服務發現、負載均衡和容器健康狀態監控。本文將圍繞以下幾個方面展開:

  1. Service 類型:ClusterIP、NodePort、Headless Service、LoadBalancer(MetallB)

  2. Ingress 的實現原理

  3. 健康檢查探針:Liveness、Readiness、Startup


一、Service 類型詳解

1. ClusterIP

ClusterIP 是默認的 Service 類型,用于在集群內部暴露服務。外部無法直接訪問。

apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 8000      # Service 端口targetPort: 80  # Pod 端口type: ClusterIP     # 可省略,默認即為 ClusterIP

注釋:

  • port: Service 對外提供的端口

  • targetPort: Pod 中容器監聽的端口

  • 集群內可通過?nginx-service:8000?訪問該服務

2. NodePort

NodePort 會在每個節點上開放一個靜態端口,外部可通過?節點IP:端口?訪問服務。

apiVersion: v1
kind: Service
metadata:name: nginx-nodeport
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80nodePort: 30080  # 可選,范圍 30000-32767type: NodePort

注釋:

  • nodePort: 若不指定,K8s 會自動分配一個端口

  • 外部訪問方式:http://<節點IP>:30080

3. Headless Service

Headless Service 不分配 ClusterIP,直接返回后端 Pod 的 IP 地址列表。適用于需要直接訪問 Pod 的場景(如 StatefulSet)。

apiVersion: v1
kind: Service
metadata:name: nginx-headless
spec:clusterIP: None  # 關鍵字段,表示 Headlessselector:app: nginxports:- protocol: TCPport: 80targetPort: 80

注釋:

  • DNS 查詢該 Service 會返回所有后端 Pod 的 IP

  • 適用于自定義負載均衡或狀態ful服務發現

4. LoadBalancer 與 MetallB

在云環境中,LoadBalancer 類型會自動分配外部負載均衡器。在裸金屬環境中,可使用 MetallB 實現類似功能。

MetallB 支持兩種模式:

  • Layer2 模式:通過 ARP/NDP 響應將虛擬 IP 映射到某個節點

  • BGP 模式:通過 BGP 協議向路由器宣告路由,實現負載均衡

apiVersion: v1
kind: Service
metadata:name: nginx-lb
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer

注釋:

  • 在支持 LoadBalancer 的云平臺中,會自動分配外部 IP

  • 在裸金屬環境中需安裝并配置 MetallB

二、Ingress 原理與功能

Ingress 是管理外部訪問集群服務的 API 對象,通常用于 HTTP/HTTPS 路由。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: example.comhttp:paths:- path: /apipathType: Prefixbackend:service:name: api-serviceport:number: 80

注釋:

  • host: 域名規則

  • path: 路徑匹配規則

  • backend: 轉發到的 Service

Ingress 需配合 Ingress Controller(如 nginx-ingress、traefik)使用。

三、健康檢查探針

Kubernetes 提供三種探針來監控容器健康狀態:

1. Liveness Probe(存活探針)

用于檢測容器是否存活,失敗則會重啟容器。

livenessProbe:httpGet:path: /healthport: 8080initialDelaySeconds: 10  # 容器啟動后等待10秒開始檢測periodSeconds: 5         # 每5秒檢測一次

適用場景:檢測死鎖、應用無響應等。

2. Readiness Probe(就緒探針)

用于檢測容器是否準備好接收流量,失敗則從 Service 后端列表中移除。

readinessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5

適用場景:等待依賴服務啟動、加載配置完成等。

3. Startup Probe(啟動探針)

用于保護慢啟動容器,避免在啟動過程中被誤殺。

startupProbe:httpGet:path: /startupport: 8080failureThreshold: 30  # 最多嘗試30次periodSeconds: 10     # 每10秒嘗試一次

適用場景:啟動時間較長的 Java 應用、數據庫初始化等。

總結

Kubernetes 通過 Service 和 Ingress 提供了靈活的服務暴露方式,通過健康檢查探針保障了應用的可靠性。合理使用這些機制,可以構建出高可用、易維護的云原生應用。

探針類型作用失敗行為
LivenessProbe檢測容器是否存活重啟容器
ReadinessProbe檢測容器是否就緒從 Service 中移除
StartupProbe保護慢啟動容器不觸發其他探針

建議根據應用特性合理配置探針,避免誤判和頻繁重啟。

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

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

相關文章

如何規劃一年、三年、五年的IP發展路線圖?

?在知識付費領域&#xff0c;規劃 IP 發展路線&#xff0c;需要從短期、中期、長期不同階段&#xff0c;系統地布局內容、運營與商業變現&#xff0c;逐步提升 IP 影響力與商業價值。一年目標&#xff1a;立足定位&#xff0c;夯實基礎精準定位&#xff0c;打磨內容利用創客匠…

C++從入門到實戰(二十)詳細講解C++List的使用及模擬實現

C從入門到實戰&#xff08;二十&#xff09;C List的使用及模擬實現前言一、什么是List1.1 List的核心特性1.2 List與vector的核心差異1.3 List的構造、拷貝構造與析構1.3.1 常用構造函數1.3.2 析構函數1.4 List的迭代器1.4.1 迭代器類型與用法示例1&#xff1a;正向迭代器遍歷…

人工智能學習:機器學習相關面試題(一)

1、 機器學習中特征的理解 def: 特征選擇和降維 特征選擇&#xff1a;原有特征選擇出子集 &#xff0c;不改變原來的特征空間 降維&#xff1a;將原有的特征重組成為包含信息更多的特征&#xff0c; 改變了原有的特征空間降維的主要方法 Principal Component Analysis (主成…

亞馬遜巴西戰略升級:物流網絡重構背后的生態革新與技術賦能之路

在全球電商版圖中&#xff0c;拉美市場正以驚人的增長速度成為新的戰略高地&#xff0c;而巴西作為其中的核心市場&#xff0c;憑借龐大的人口基數、高速發展的數字經濟以及不斷提升的消費能力&#xff0c;吸引著眾多電商巨頭爭相布局。近日&#xff0c;亞馬遜宣布將于2025年底…

PS自由變換

自由變換 自由變換用來對圖層、選區、路徑或像素內容進行靈活的像素調整。可以進行縮放、旋轉、扭曲等多種操作。快捷鍵&#xff1a;CtrlT&#xff0c;操作完成后使用Enter鍵可以確認變換自由變換過程中如果出現失誤&#xff0c;可以按ESC退出&#xff1b;滿意可以按enter確定。…

【K8s】整體認識K8s之存儲--volume

為什么要用volume&#xff1f;首先。容器崩潰或重啟時&#xff0c;所有的數據都會丟失&#xff0c;我們可以把數據保存到容器的外部&#xff0c;比如硬盤nfs&#xff0c;這樣&#xff0c;即使容器沒了&#xff0c;數據還在&#xff1b;第二就是容器之間是隔離的。我們如果想共享…

flutter工程

安裝flutter 在VSCode中安裝flutter extension、flutter組件 國內源下載flutter 3.35.2的SDK&#xff0c;安裝&#xff0c;官網下載不了 將flutter安裝目錄加入環境變量中 D:\program\flutter_sdk\flutter\bin 執行 C:\Windows\System32>flutter --version Flutter 3.35.2 ?…

C/C++ 高階數據結構 —— 二叉搜索樹(二叉排序樹)

? &#x1f381;個人主頁&#xff1a;工藤新一 ? &#x1f50d;系列專欄&#xff1a;C面向對象&#xff08;類和對象篇&#xff09; ? &#x1f31f;心中的天空之城&#xff0c;終會照亮我前方的路 ? &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章…

stm32F4掛載emmc以及重定義printf

1.Cubemx SDIO USART 使用串口輸出調試信息 FATFS Clock Configuration 防止堆棧溢出 2.Keil5 新建自定義文件夾及文件 將文件夾添加進工程 新建.c與.h文件&#xff0c;保存到自定義的文件夾&#xff0c;并添加到工程中 bsp_emmc.c #include "bsp_emmc.h" #include…

基于AI的大模型在S2B2C商城小程序中的應用與定價策略自我評估

摘要&#xff1a;本文聚焦電商行業&#xff0c;結合開源AI大模型與AI智能名片S2B2C商城小程序的技術特性&#xff0c;提出基于行業數據挖掘與自我評估的定價策略。通過分析行業價格分布與銷量占比&#xff0c;結合商品設計、品牌創意度、商品豐富度及內功等評估指標&#xff0c…

中國移動云電腦一體機-創維LB2004_瑞芯微RK3566_2G+32G_開ADB安裝軟件教程

中國移動云電腦一體機-創維LB2004_瑞芯微RK3566_2G32G_開ADB安裝軟件教程簡介&#xff1a;中國移動云電腦一體機-創維LB2004&#xff0c;顯示器是23.8英寸1920x1080分辨率&#xff0c;安卓盒子配置是瑞芯微RK3566-四核-1.8GHz處理器-2G32G&#xff0c;預裝Android11系統。具體操…

普藍自研AutoTrack-4X導航套件平臺適配高校機器人實操應用

在當前高校機器人工程、人工智能、自動化等專業的教學與科研中&#xff0c;師生們常常面臨一個核心痛點&#xff1a;缺乏一套 “開箱即用、可深研、能落地” 的自主移動導航平臺 —— 要么是純仿真環境脫離實際硬件&#xff0c;要么是硬件零散需大量時間搭建&#xff0c;要么是…

2025年工會證考試題庫及答案

一、單選題1.工會法人資格審查登記機關自收到申請登記表之日起(??)日內對有關申請文件進行審查&#xff0c;對審查合格者&#xff0c;辦理登記手續&#xff0c;發放《工會法人資格證書》及其副本和《工會法人法定代表人證書》。A.二十B.十五C.六十D.三十答案:D 解析:第七條基…

【OpenGL】LearnOpenGL學習筆記17 - Cubemap、Skybox、環境映射(反射、折射)

上接&#xff1a;https://blog.csdn.net/weixin_44506615/article/details/150935025?spm1001.2014.3001.5501 完整代碼&#xff1a;https://gitee.com/Duo1J/learn-open-gl | https://github.com/Duo1J/LearnOpenGL 一、立方體貼圖 (Cubemap) 立方體貼圖就是一個包含了6張2…

第十七章 ESP32S3 SW_PWM 實驗

本章將介紹使用 ESP32-S3 LED 控制器(LEDC)。 LEDC 主要用于控制 LED&#xff0c;也可產生PWM信號用于其他設備的控制。該控制器有 8 路通道&#xff0c;可以產生獨立的波形&#xff0c;驅動 RGB LED 等設備。 LED PWM 控制器可在無需 CPU 干預的情況下自動改變占空比&#xff…

Flink CDC如何保障數據的一致性

Flink CDC如何保障數據的一致性 前言 在大規模流處理中&#xff0c;故障是無可避免的。機器會宕機&#xff0c;網絡會抖動。一個可靠的流處理引擎不僅要能高效地處理數據&#xff0c;更要在遇到這些故障時&#xff0c;保證計算結果的正確性。Apache Flink 正是因其強大的容錯機…

Spring Boot 定時任務入門

1. 概述 在產品的色彩斑斕的黑的需求中&#xff0c;有存在一類需求&#xff0c;是需要去定時執行的&#xff0c;此時就需要使用到定時任務。例如說&#xff0c;每分鐘掃描超時支付的訂單&#xff0c;每小時清理一次日志文件&#xff0c;每天統計前一天的數據并生成報表&#x…

學習:uniapp全棧微信小程序vue3后臺(6)

26.實現描述評分標簽的雙向數據綁定 /pages/wallpaper/picadd Array.prototype.splice() splice() 方法就地移除或者替換已存在的元素和/或添加新的元素。 二次確認 展現 確認標簽 刪除標簽 溫故知新&#xff1a; 標簽&#xff1a; 關閉標簽 27.uni-data-select調用云端分類…

Azure Marketplace 和 Microsoft AppSource的區別

微軟的商業應用生態中&#xff0c;Azure Marketplace 和 Microsoft AppSource 是微軟并行的兩個主要“應用市場”&#xff08;Marketplace&#xff09;&#xff0c;它們共同構成了微軟的“商業市場”&#xff08;Commercial Marketplace&#xff09;計劃&#xff0c;但服務的目…

完整實驗命令解析:從集群搭建到負載均衡配置(2)

一、環境準備與基礎網絡配置1.1 節點角色與網絡規劃節點角色主機名所屬網段IP 地址網關核心功能Web 服務器web110.1.8.0/2410.1.8.1110.1.8.10&#xff08;后期調整為 10.1.8.20&#xff09;部署 Nginx/HTTPD&#xff0c;提供 Web 服務Web 服務器web210.1.8.0/2410.1.8.1210.1.…