【Kubernetes】以LOL的視角打開K8s

前言

對于大部分后端程序員乃至于非后端程序員來說,在當前的云原生時代,Kubernetes(后稱K8s)都是繞不開的一項技術;同時,對于這個時代的程序員來說,“英雄聯盟”(后稱LOL)也是陪伴包括我在內的很多人成長的一款游戲。

在我的工作經歷中,常常在組內有小伙伴需要使用到K8s的時候對K8s沒有必要的概念,但是我發現和他們聊起LOL卻總能找到共同語言,所以我就在想,既然K8s本身的學習曲線不是那么平緩,那么是不是可以借助LOL來幫大家理解什么是K8s呢?

目的

本系列文章的目的是借助LOL,幫大家更好地理解K8s,入門K8s,上手K8s。

設計的內核

每一項產品都有它的一個設計的內核,對于LOL來說,它本質是一款游戲,它的內核就是“通過各種手段,摧毀對方的基地”,不管你是通過兵線運營、擊殺對手、控制中立資源,這所有的一切都是圍繞最終的目的:摧毀對方的基地,來服務的

那么對于K8s來說,設計的內核就是更好的進行容器的管理(對于什么是容器,不在本文的討論范圍內,可以自行搜索一下),不管是我們創建deployment,service,statefulset,我們最終的目的,都是對容器進行管控,讓封裝在容器內的應用更好的運行。

LOL的英雄 - K8s的容器

LOL的一局游戲是根據這局游戲中的10位英雄展開的。不同的英雄有不同的定位:有些是AP英雄、有些是AD英雄;有些擅長輸出,有些擅長輔助。
在這里插入圖片描述

同樣,對于K8s來說,一套K8s集群都是圍繞著集群中的容器在運轉,就像k8s官方描述的那樣,它是一個容器編排平臺。搭載不同業務的容器有不同的編排方式:有些需要持久化數據,有些只用處理一些無狀態的請求;有些需要對外暴露端口,有些則在容器內自己玩就行。

LOL的英雄定位 - K8s的工作負載資源

在LOL中,有了英雄,我們要給它分配不同的定位:上路、中路、下路、打野、輔助,不同場景需要不同定位的英雄,比如作為輔助的風女就是沒辦法替代盲僧取野區刷野,作為戰士的蓋倫也沒法替代女槍在后期作為射手提供輸出。
在這里插入圖片描述

K8s也是一樣,有了鏡像或者說應用,我們要給它配置不同的工作負載資源Workload Resources。K8s中的工作負載資源(Workload Resources)是用于管理應用的部署、擴展和操作的核心概念。這些資源幫助用戶定義應用程序的期望狀態,并自動處理實際狀態與期望狀態之間的差異。以下是幾種主要的工作負載資源及其適用場景:

🌀 ??Deployment??

??功能??:管理無狀態應用的 Pod 副本集,支持聲明式更新、滾動升級和回滾。
??核心特性??:

  • ??滾動更新??:通過 maxUnavailable(最大不可用 Pod 數)和 maxSurge(最大額外 Pod 數)控制更新節奏。
  • ??自動恢復??:Pod 故障時自動替換,確保副本數符合預期。
  • ??版本控制??:保留歷史版本(默認 10 個),支持一鍵回滾。
    ??適用場景??:
  • Web 服務、API 網關等無需持久化狀態的應用。
  • 需頻繁更新或動態擴縮容的服務(如微服務后端)。

🧩 ??StatefulSet??

??功能??:專為有狀態應用設計,提供穩定網絡標識、持久化存儲和有序操作。
??核心特性??:

  • ??穩定標識??:Pod 名稱固定(如 web-0web-1),DNS 記錄持久化(<pod-name>.<service-name>.svc)。
  • ??持久化存儲??:通過 volumeClaimTemplates 為每個 Pod 動態創建獨立 PV,數據與 Pod 生命周期解耦。
  • ??有序操作??:順序創建(0→1→2)、逆序刪除(2→1→0),滾動更新時按索引反向替換。
    ??適用場景??:
  • 數據庫集群(MySQL、PostgreSQL)、消息隊列(Kafka、RabbitMQ)。
  • 分布式存儲系統(Elasticsearch、Cassandra)。
    ??注意事項??:
  • 需搭配 ??Headless Service??(ClusterIP: None)實現 DNS 解析。
  • PV 回收策略建議設為 Retain 防止誤刪數據。

📡 ??DaemonSet??

??功能??:確保每個節點(或指定節點)運行一個 Pod 副本,用于節點級守護進程。
??核心特性??:

  • ??節點全覆蓋??:新節點加入時自動創建 Pod,節點移除時自動刪除。
  • ??靈活調度??:通過 nodeSelector 或污點容忍(Tolerations)控制部署范圍。
  • ??資源優化??:支持資源請求/限制配置,避免占用過多節點資源。
    ??適用場景??:
  • 日志收集(Fluentd、Logstash)、監控代理(Prometheus Node Exporter)。
  • 網絡插件(Calico、Flannel)、安全掃描工具(Clair)。

? ??Job??

??功能??:管理一次性任務,確保指定數量的 Pod 成功運行后終止。
??核心特性??:

  • ??任務容錯??:支持失敗重試(backoffLimit 控制重試次數)。
  • ??并行控制??:通過 parallelism 設置并發 Pod 數。
    ??適用場景??:
  • 批處理作業(如數據遷移)、AI 訓練任務。

?? ??CronJob??

??功能??:基于時間調度的 Job 控制器,執行周期性任務。
??核心特性??:

  • ??Cron 表達式??:靈活定義任務執行時間(如 0 * * * * 每小時)。
  • ??任務繼承??:繼承 Job 的所有特性(如重試、并行控制)。
    ??適用場景??:
  • 定時備份、周期報表生成、資源清理任務。

💎 ??工作負載資源對比表??

??資源類型????核心作用????關鍵特性????典型場景??
??Deployment??無狀態應用管理滾動更新、自動擴縮容、版本回滾Web 服務、API 網關
??StatefulSet??有狀態應用管理穩定網絡標識、持久化存儲、有序操作數據庫集群、消息隊列
??DaemonSet??節點級守護進程全覆蓋節點、污點容忍、自動擴縮日志收集、網絡插件
??Job??一次性任務失敗重試、并行控制批處理計算、數據遷移
??CronJob??周期性任務時間調度、繼承 Job 特性定時備份、資源清理

? ??總結??:

  • ??無狀態服務??首選 Deployment,??有狀態服務??必用 StatefulSet + PVC
  • ??節點級任務??(如監控)用 DaemonSet,??批處理/定時任務??用 Job/CronJob
  • 生產環境需結合資源請求/限制(resources.requests/limits)避免資源爭搶。

LOL的裝備 - K8s的資源配置

在LOL中,選好了英雄,確定好了定位,還需要在實際應用中出不同的裝備才能發揮這個英雄在這個定位中的最大威力。例如射手需要“最后的輕語”來實現處理前排的能力,坦克需要蘭頓之兆來實現抵抗暴擊的能力。
在這里插入圖片描述

在K8s中也是一樣,我們有了應用,也配置了工作負載,還需要其它的一些資源配置來發揮應用真正的實力。例如我們有個在線筆記的應用,我們給他配置好了StatefulSet后,還需要進一步給它配置pvc讓它實現持久化筆記的能力;還需要進一步給它配置service來實現對集群外暴露接口的能力。那么常見的配置有哪些呢?

🔹 ??Service??

??功能??:為Pod提供??穩定訪問入口??,實現服務發現與負載均衡。
??類型與場景??:

  • ??ClusterIP??:集群內部服務通信(默認)。
  • ??NodePort??:通過節點IP+端口暴露服務(臨時測試)。
  • ??LoadBalancer??:云環境生產級外部訪問(自動創建云LB)。

🔹 ??ConfigMap??

??功能??:存儲??非敏感配置??(環境變量、配置文件),解耦應用與配置。
??場景??:

  • 注入環境變量(如調試開關)。
  • 掛載配置文件(如Nginx配置)。
  • 支持熱更新(Volume掛載時自動同步)。

🔹 ??Secret??

??功能??:管理??敏感數據??(密碼、TLS證書),Base64編碼存儲。
??類型與場景??:

  • ??Opaque??:自定義敏感數據(如數據庫密碼)。
  • ??kubernetes.io/tls??:HTTPS證書(用于Ingress)。
  • ??dockerconfigjson??:私有鏡像倉庫認證。

🔹 ??Ingress??

??功能??:管理??外部HTTP/S流量路由??,支持域名/路徑規則與SSL終止。
??核心組件??:

  • ??Ingress控制器??(如Nginx、Traefik)處理流量。
  • ??規則??:按域名/路徑轉發到不同Service(如/api→后端服務)。

🔹 ??PVC (PersistentVolumeClaim)??

??功能??:聲明??持久化存儲需求??,抽象底層存儲細節。
??場景??:

  • 數據庫持久化(如MySQL數據卷)。
  • 共享存儲(NFS多Pod讀寫)。
  • 動態供給:通過StorageClass自動創建PV。

💎 ??核心對比??

配置對象核心作用典型場景
Service服務發現+負載均衡微服務通信、外部流量接入
ConfigMap非敏感配置管理應用參數、環境變量注入
Secret敏感數據存儲密碼、TLS證書、API密鑰
IngressHTTP/S流量路由多域名管理、HTTPS卸載
PVC持久化存儲聲明數據庫存儲、日志持久化

? ??一句話總結??:

  • 網絡訪問用 ??Service/Ingress??,配置分離用 ??ConfigMap/Secret??,數據持久用 ??PVC??。
  • 生產環境優先組合:LoadBalancer + Ingress + TLS Secret + PVC

結語

LOL和K8s都上手之后,其實我覺得相比較起來,LOL的上手難度要高多了,這么多個英雄,每個英雄有不同的機制和技能,這些可比K8s的內容多多了,所以如果大家LOL都能上手的話,上手K8s肯定不會是問題的!

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

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

相關文章

UE5 游戲模板 —— FirstShootGame

UE5 游戲模板 —— FirstShootGame 前言一、GameMode二、組件1.ShooterPickUpComponent單播多播 2.ShooterWeaponComponent附著武器開火 3.小結4.ShooterProjectile初始化碰撞受擊檢測 三、Character初始化輸入移動 總結 前言 有了前兩個俯視角游戲的基礎讓我們來看看相對復雜…

國家級與省級(不含港澳臺)標準地圖服務網站匯總

在先前的文章中&#xff0c;介紹了部分省級的標準地圖服務網站可以下載各個區縣近幾年、不同要素的標準地圖&#xff08;鏈接&#xff1a;國家與省市縣 標準地圖服務網站 審圖號地圖下載&#xff09;&#xff0c;但是當時只匯總了部分省級的標準地圖服務網站。 這兩天看到了一個…

前端開發面試題總結-vue3框架篇(一)

文章目錄 Vue3高頻問答一、vue2/vue3中常用的構建工具和腳手架分別是什么? 有什么區別?二、請說一說vue2和vue3的區別&#xff1f;三、請說一說vue2和vue3響應式原理的區別&#xff1f;四、vue3 如何定義響應式數據?五、說一說你對vue3中的setup函數?六、說一說vue3中的路由…

【LLM06---相對位置編碼】

文章目錄 相對位置編碼經典式XLNET式T5式DeBERTa式 相對位置編碼 上一節我們介紹了絕對位置編碼&#xff0c;這一節我們來看相對位置編碼&#xff0c;也就是用相對位置信息來表示&#xff0c;之前每一個token的位置式通過一個絕對的位置向量來表示的&#xff0c;現在我們在計算…

純跟蹤算法本質解密:航向角偏差=預瞄角?數學證明與工程實踐

定義關鍵問題 在深入純跟蹤算法核心前&#xff0c;必須澄清一對容易被混淆但至關重要的概念&#xff1a; 概念坐標系物理意義計算方式航向角偏差(α_global)全局坐標系車輛航向與預瞄點方向的夾角預瞄點方位角 - 車輛航向角預瞄角(α_body)車身坐標系預瞄點相對于車輛縱軸的夾…

自動駕駛叉車在倉庫環境中是否安全?

隨著自動駕駛叉車的興起&#xff0c;倉庫運營持續演進。叉車自動化技術的引入使倉庫設施變得更快、更安全且更具成本效益。然而一個關鍵問題依然存在&#xff1a;它們在繁忙的倉庫環境中是否安全&#xff1f; 一 、什么是自動駕駛叉車&#xff1f; 自動駕駛叉車&#xff0c;也…

Neo4j操作指南:修改節點數據與新增節點屬性

Neo4j操作指南&#xff1a;修改節點數據與新增節點屬性 引言 Neo4j作為領先的圖數據庫&#xff0c;提供了靈活的數據操作方式。在實際應用中&#xff0c;我們經常需要修改已有節點的數據或為節點添加新屬性。本文將詳細介紹如何使用Cypher查詢語言在Neo4j中完成這些操作&…

AI大模型學習之基礎數學:微積分在AI大模型中的核心-梯度與優化(梯度下降)詳解

微積分在AI大模型中的核心:梯度與優化(梯度下降) 人工智能(AI)大模型的訓練和優化依賴于數學基礎,其中微積分、線性代數和概率統計構成了其理論核心。微積分在AI中的核心作用在于提供優化工具,尤其是通過梯度和梯度下降方法,幫助模型在高維參數空間中找到損失函數的最…

記錄tweenjs踩坑

初次上手tweenjs&#xff0c;試了很多示例代碼都不生效&#xff0c;結果在html中生效&#xff0c;在vue3的項目中怎么都不生效 <!DOCTYPE html> <html lang"en"><head><title>Tween.js / simplest possible example!</title><meta…

PINA開源程序用于高級建模的 Physics-Informed 神經網絡

?一、軟件介紹 文末提供程序和源碼下載 PINA 是一個開源 Python 庫&#xff0c;旨在簡化和加速科學機器學習 &#xff08;SciML&#xff09; 解決方案的開發。PINA 基于 PyTorch、PyTorch Lightning 和 PyTorch Geometry 構建&#xff0c;提供了一個直觀的框架&#xff0c;用…

一種對外IP/MAC地址收斂的軟硬件系統

----------原創不易&#xff0c;歡迎點贊收藏。廣交嵌入式開發的朋友&#xff0c;討論技術和產品------------- 今天發一篇五年前的文章&#xff0c;不調單板。對以太網和交換片的較多理解&#xff0c;對系統級的優化。 大部分的網絡設備&#xff0c;都由多種單板組成&#x…

【flink】 flink 讀取debezium-json數據獲取數據操作類型op/rowkind方法

flink 讀取debezium-json數據獲取數據操作類型op/rowkind方法。 op類型有c&#xff08;create&#xff09;,u&#xff08;update&#xff09;,d&#xff08;delete&#xff09; 參考官網案例&#xff1a;此處的"op": "u",就是操作類型。 {"before&qu…

某手游cocos2dlua反編譯

一、獲取加載的luac文件 通過frida hook libccos2dlua.so 的luaL_loadbuffer函數對luac進行dump js代碼如下&#xff0c;得到dump后的lua文件 // 要加載的目標庫名 var targetLibrary "libcocos2dlua.so"; var dlopen Module.findExportByName(null, "dlope…

`toRaw` 與 `markRaw`:Vue3 響應式系統的細粒度控制

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

Python文件遷移之Shutil庫詳解

Shutil是一個Python內置的用來高效處理文件和目錄遷移任務的庫。Shutil不僅支持基本的文件復制、移動和刪除操作&#xff0c;還具備處理大文件、批量遷移目錄、以及跨平臺兼容性等特性。通過使用Shutil&#xff0c;我們可以更加輕松地實現文件系統的管理和維護&#xff0c;本文…

【服務器R環境架構】基于 micromamba下載 R 庫包

目錄 準備工作&#xff1a;下載并安裝R環境下載并安裝R環境方式1&#xff1a;下載 .tar.bz2 壓縮包進行解壓執行&#xff08;官方推薦&#xff09;方式2&#xff1a; 創建并激活R環境 下載R庫包安裝CRAN包在 micromamba 中安裝 GitHub 包&#xff08;如 BPST&#xff09; 參考 …

基于 Apache POI 實現的 Word 操作工具類

基于 Apache POI 實現的 Word 操作工具類 這個工具類是讓 AI 寫的&#xff0c;已覆蓋常用功能。 如不滿足場景的可以讓 AI 繼續加功能。 已包含的功能&#xff1a; 文本相關&#xff1a; 添加文本、 設置字體顏色、 設置字體大小、 設置對齊方式、 設置字符間距、 設置字體加粗…

時間序列預測、分類 | 圖神經網絡開源代碼分享(上)

本期結合《時間序列圖神經網絡(GNN4TS)綜述》&#xff0c;整理了關于圖神經網絡在時間序列預測、分類等任務上的開源代碼和學習資料以供大家學習、研究。 參考論文&#xff1a;《A Survey on Graph Neural Networks for Time Series: Forecasting, Classification, Imputation,…

Vue 添加水印(防篡改: 刪除水印元素節點、修改水印元素的樣式)

MutationObserver_API: 觀察某一個元素的變化// index.vue<template><div class="container"><Watermark text="版權所有" style="background: #28c848"><!-- 可給圖片、視頻、div...添加水印 --><div class=&quo…

如何處理開發不認可測試發現的問題

解決方案 第一步&#xff1a;收集確鑿證據 確保有完整的復現結果準備詳細的記錄材料&#xff1a; 截屏錄屏操作步驟記錄 帶著這些證據與開發人員進行溝通 第二步&#xff1a;多角度驗證 如果與開發人員溝通無果&#xff1a; 競品分析&#xff1a;查看市場上同類產品如何…