云原生 —— K8s 容器編排系統

一、 ?簡介

Kubernetes,也稱為K8s,是一個開源的容器編排系統,用于自動部署、擴展和管理容器化應用程序,幫助開發者更高效地跨集群管理應用。本文總結了 k8s 的基礎概念和技術架構。

二、基礎概念

1.??云原生(Cloud Native)

云原生是在云計算環境中構建、部署和管理現代應用程序的軟件方法。云原生架構基于以下幾個核心要素:

- 微服務:將應用分解為一組更小的輕量級服務,而這些服務可通過應用編程接口 (API) 輕松組合并相互連接。

-?容器和編排

- DevOps

- 持續集成和持續交付 (CI/CD)

2.??容器化Containerization

容器化是指將應用程序及其依賴項打包成一個容器,使其可以在任何支持容器的環境中運行方便部署和管理。

- 容器本身不需要運行一個完整的操作系統因此虛擬機輕量

- 容器可以共享同一個操作系統內核,減少資源浪費。

- 容器可以在任何支持容器的環境中運行,無論是本地、云端還是其他環境。

- 容器提供了應用程序之間的隔離,確保應用程序不會相互影響。

3.??編排(Orchestration)

容器編排指自動化和管理容器化應用程序的部署、擴展、管理和監控的過程。編排涉及到多個容器之間的協調和管理,以確保應用程序的正常運行和高可用性。

-?容器生命周期管理,包括創建、啟動、停止和刪除。

-?容器路由發現與網絡管理,確保服務之間可以相互通信。

-?容器負載均衡與彈性伸縮,流量分發,自動增加或減少容器實例。

-?監控和日志:監控應用程序的性能和日志,確保應用程序的正常運行。

二、??集群架構

kubectl: 使用 Kubernetes API 與 Kubernetes 集群的控制面進行通信的命令行工具

API server公開 Kubernetes HTTP API?負責處理接受請求的工作是 Kubernetes 控制平面的前端

controller manager負責運行控制器進程

schedular: 節點調度器查找尚未綁定到節點的 Pod,并將每個 Pod 分配給合適的節點。

etcd: key-value 數據庫負責?Kubernetes 所有集群數據的持久化存儲

pod: 一個或多個應用容器的組合,并且包含共享的存儲、IP 地址和有關如何運行它們的信息,只有容器緊耦合并且需要共享磁盤等資源時,才應將其編排在一個 Pod 中。

runtime: 運行容器的啟動器負責解析容器鏡像創建隔離的運行環境

kubelet節點管理器負責 Kubernetes 控制面和節點之間通信的進程確保 Pod 及其容器正常運行

kube-proxy: 每個節點上所運行的網絡代理允許從集群內部或外部的網絡會話與 Pod 進行網絡通信

1.??集群節點

集群是指一組計算機或節點,共同工作以提供一種分布式計算環境。集群中的節點可以是物理機虛擬機,集群可以提供高可用性、可擴展性和負載均衡等特性。一個 Kubernetes 實例是一個集群,這些節點由控制面負責管理

2.??工作負載workload

一個工作負載運行 Kubernetes 一個應用通常你不需要直接創建 Pod,甚至單實例 Pod。相反,你會使用工作負載資源來創建管理一組 Pod 副本Kubernetes?提供了以下幾種工作負載資源

- Deployments 通常適用于不保持狀態的負載任何 Pod 都是可替換的

-?StatefulSets 用來管理有狀態應用的工作負載每個 Pod 都有一個永久不變的 ID

-?DaemonSets 確保每個節點 node 上都運行有 pod,適用于需要在每個節點上部署的系統級任務:日志收集、節點監控(采集 CPU、內存、磁盤等指標),網絡插件(確保每個節點運行網絡組件,實現 Pod 間網絡互通),安全掃描工具等。

-?Jobs 一次性任務,運行完成后就會停止CronJob 通過重復調度啟動一次性的 Job

容器鏡像一個隨時可以運行的軟件包, 包含運行應用程序所需的一切:代碼和它需要的所有運行時、應用程序和系統庫,以及一些基本設置的默認值。

引用依賴:一個工作負載依賴于另一個工作負載的運行狀態或輸出。

灰度發布同時維護新舊版本,是將新版本逐漸推廣到生產環境中的一種發布策略。將一部分用戶路由到新版本,一部分用戶路由到舊版本,若新版本表現較好,則逐漸增加路由到新版本的用戶流量,直到所有用戶都使用新版本。

Scaling?擴縮容

-?Horizontal Scaling 垂直擴縮將更多資源(例如:內存或 CPU)分配給已經為工作負載運行的 Pod通過替換容器鏡像實現的

-?Vertical Scaling 橫向擴縮是通過改變工作負載中的副本數量來實現的。Pod 自動擴縮容實現為一個間歇運行的控制回路默認間隔 15 在每個時間段內,控制器管理器都會根據每個 HorizontalPodAutoscaler 定義中指定的指標查詢資源利用率進而計算出目標副本數。

3.??存儲

Volume 卷為 Pod 中的容器提供了一種通過文件系統訪問和共享數據的方式數據共享可以發生在容器內不同本地進程之間,或在不同容器之間,或在多個 Pod 之間。容器中的文件在磁盤上是臨時存放的可以提供持久化存儲數據,這樣即使 Pod 重啟或被替換,存儲的數據仍然可用當 Pod 被啟動時,容器中的進程看到的文件系統視圖是由它們的容器鏡像 的初始內容以及掛載在容器中的卷所組成的。

Storage Class?存儲類可以理解為存儲系統配置文件定義了如何創建 PV,例如,使用哪種存儲卷(塊存儲或文件系統)

Volume Snapshot?卷快照是數據卷在某個時間點的副本,可以用于創建新的數據卷或恢復數據卷到之前的狀態卷快照是只讀的,可以被用來創建新的 PVC。

Persistent Volume 持久卷是集群中的一塊存儲資源,可以由管理員事先制備, 或者使用存儲類來動態制備。PVC 存儲聲明用戶創建的用于請求一定量的存儲空間,描述了所需的存儲空間的大小、訪問模式(例如,讀寫或只讀)和新建方式耗用 PV 資源

4.??網絡

Pod集群中的每個 Pod 都會獲得自己的、獨一無二的集群范圍 IP 地址。Pod 有自己的私有網絡命名空間,Pod 內的所有容器共享這個命名空間?運行在同一個 Pod 中的不同容器的進程彼此之間可以通過?localhost?進行通信。

集群網絡 處理 Pod 之間的通信,所有 Pod 可以與所有其他 Pod?直接進行通信, 無論它們是在同一個節點還是在不同的節點上。

Service?為由一個或多個后端 Pod 實現的服務提供一個穩定長效的 IP 地址或主機名, 其中組成服務的各個 Pod 可以隨時變化。Service 的暴露方式是四層,只關心 TCP/UDP 協議的流量轉發, IP 端口暴露服務

●?ClusterIP 通過集群的內部 IP 公開 Service,只能夠在集群內部訪問可以使用 Ingress 或者 Gateway API 向公共互聯網公開服務。

●?NodePort 通過每個節點上的 IP 和靜態端口公開 Service作用域可以集群內集群外可以自由設置自己的負載均衡解決方案

●?LoadBalancer 使用云平臺的負載均衡器向外部公開 Service來自外部負載均衡器的流量將被直接重定向到后端各個 Pod 上,一種更簡單但可配置性較低的 Ingress 機制。

Ingress?為集群外部到集群內部服務提供 HTTP(S)?流量路由,并將流量分發到各個關聯的 service 上。Ingress 的暴露方式是七層,使用 URL 暴露服務可以權重/header/cookie?切分流量,從而將同一個 url 路由到多個服務中進行灰度發布

5.??調度

在 Kubernetes 中,調度是指將 Pod 放置到合適的節點上,以便對應節點上的 Kubelet 能夠運行這些 Pod。調度器通過 Kubernetes 的監測機制來發現集群中新創建且尚未被調度到節點上的 Pod然后選擇一個最佳節點來運行新創建的或尚未調度的 Pod。?

節點調度:pod 與節點間的調度策略

-?親和調度:將 Pod 調度到具有特定標簽或屬性的節點上

-?反親和調度:將 Pod 調度到不具有特定 CPU 架構/內存大小/存儲類型的節點上

可用區打散:打散策略將工作負載的 Pod 平均打散部署在各個可用區,提高應用的高可用性,至少需要兩個可用區

Pod 調度:pod 間的調度策略

-?親和調度:將 Pod 調度到與其他 Pod 相同的節點上,以共享資源

-?反親和調度:確保多個 Pod 被調度到不同的節點上,以提高可用性

容忍調度:容忍度是指 Pod 對節點上的污點(節點上的資源不足/網絡不穩定/存儲空間不足)的容忍程度,容忍度可以被設置為:

-?NoSchedule:Pod 將不會被調度到具有該污點的節點上

-?PreferNoSchedule:Pod 將盡量避免被調度到具有該污點的節點上,但如果沒有其他選擇,仍然可以被調度到該節點上

-?NoExecute:Pod 將不會被調度到具有該污點的節點上,并且如果已經被調度到該節點上,將被驅逐

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

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

相關文章

SQLite中SQL的解析執行:Lemon與VDBE的作用解析

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 在 SQLite 的內部實現中,SQL 語句的解析與執行是一個精妙的過程,涉及詞法分析、語法分析、中間代碼生成與執行等多個環節。其中,Lemon 工具和 VDBE(Virtual Database Engine…

C++學習筆記(十:類與對象基礎)

往篇內容: C學習筆記(一) 一、C編譯階段※ 二、入門案例解析 三、命名空間詳解 四、C程序結構 C學習筆記(二) 五、函數基礎 六、標識符 七、數據類型 補充:二進制相關的概念 sizeof 運算符簡介 補…

圖片查重從設計到實現(4)圖片向量化存儲-Milvus 單機版部署

Milvus 單機版部署 在 Docker 環境下安裝、應用和配置 Milvus 向量數據庫可以按照以下步驟進行,涵蓋從安裝到基礎應用的完整流程: 1. 部署前準備 服務器:建議測試環境配置 2 核 CPU、8GB 內存;處理 100 萬組向量數據,…

前端版本更新檢測機制

📌 一、為什么需要前端版本更新檢測機制?在現代 Web 項目中,我們通常會通過 CDN 或緩存策略來加快頁面加載速度,但這也帶來了一個問題:用戶可能訪問的是舊版本的頁面或資源,而不會自動更新到最新版本。這在…

Python(09)正則表達式

特殊字符 1. 基本元字符 .:匹配除換行符以外的任意單個字符。 *:匹配前面的元素零次或多次。 :匹配前面的元素一次或多次。 ?:匹配前面的元素零次或一次。 2. 定量符 {n}:匹配前面的元素恰好 n 次。 {n,}:…

k8s容器放開鎖內存限制

參考:https://access.redhat.com/solutions/1257953 問題 nccl-test容器docker.io/library/nccl-tests:24.12中跑mpirun,buff設置為NCCL_BUFFSIZE503316480 提示out of memory: pod-1:78:91 [0] include/alloc.h:114 NCCL WARN Cuda failure …

基于Zigee的溫度數據采集系統

大家好,本文帶來的是單片機課設-基于Zigee的溫度數據采集系統。 一、設計內容和要求 基于Zigbee的數據采集系統 1.1設計內容 (1)分析對比Bluetooth、Zigbee、Lora方式組網的基本原理和性能差異,撰寫分析報告; &#xf…

ATH12K 驅動框架分析

文章目錄 Linux Wireless 驅動框架深入分析 **1. 核心框架層次結構** **1.1 cfg80211 子系統 (`net/wireless/`)** **1.2 mac80211 子系統 (`net/mac80211/`)** **2. ath12k 驅動架構分析** **2.1 核心管理文件** **2.2 數據路徑文件** **2.3 平臺接口文件** **2.4 功能模塊文件…

OSPF路由協議單區域

RIP的不足 以跳數評估的路由并非最優路徑 如果RTA選擇S0/0傳輸,傳輸需時會大大縮短為3sRIP協議限制網絡直徑不能超過16跳 收斂速度慢 RIP定期路由更新 – 更新計時器:定期路由更新的時間間隔,默認30秒。 – 失效計時器:失效計時器…

Kubernetes部署與管理Scrapy爬蟲:企業級分布式爬蟲平臺構建指南

引言:Kubernetes在爬蟲領域的戰略價值在大規模數據采集場景中,??容器化爬蟲管理??已成為企業級解決方案的核心。根據2023年爬蟲技術調查報告:采用Kubernetes的爬蟲系統平均資源利用率提升??65%??故障恢復時間從小時級縮短至??秒級?…

Web-Machine-N7靶機攻略

一.環境準備(VBox,kali虛擬機,靶機) 1.1Vbox下載地址: Downloads – Oracle VirtualBox 1.2將N7導入到這個虛擬機中 1.3將kali和Vbox都設置成橋接模式 1.4開啟靶機 若鼠標出不來可以使用組合技,CtrlAltDelete強制退出 二.信息…

用毫秒級視頻回傳打造穩定操控閉環之遠程平衡控制系統技術實踐

在工業自動化、遠程機器人、無人裝備等復雜作業場景中,遠程實時操控正逐步取代傳統“監控指令”模式,成為提升效率與保障安全的關鍵能力。尤其在高風險、高精度的應用環境中,操作者不僅要“能控”,更要“看得準、反應快”。 真正…

瑞薩電子RA-T MCU系列新成員RA2T1——電機控制專家

RA2T1系列微控制器基于64MHz ArmCortex-M23內核設計,專為單電機控制應用而優化。RA2T1集成PWM定時器,以及配備3個采樣保持電路的A/D轉換器等先進的模擬功能,適用于電動工具,風扇和家用電器等高效的低端電機控制方案。RA2T1支持1.6…

Java排序算法之<選擇排序>

目錄 1、選擇排序 1.1、介紹 1.2、穩定性 2、執行流程 3、java實現 4、優缺點 總結:Java 排序算法進階路線 O(n) 算法(適合學習原理) 冒泡排序(最慢)→ 選擇排序 → 插入排序(推薦先學) …

ESP8266 http收發數據

1.先修改基礎配置 make menuconfig 打開配置菜單 選擇component config 然后選擇 修改波特率為115200 保存退出 2.修改彩色日志打印的 在component config目錄下找到log output 選中點擊空格關掉彩色日志輸出,這樣正常串口打印就沒有亂碼了 然后保存退出 3…

ZLMediaKit 源代碼入門

ZLMediaKit 是一個基于 C11 開發的高性能流媒體服務器框架,支持 RTSP、RTMP、HLS、HTTP-FLV 等協議。以下是源代碼入門的詳細指南: 1. 源碼結構概覽 主要目錄結構: text ZLMediaKit/ ├── cmake/ # CMake 構建配置 ├── …

智能Agent場景實戰指南 Day 21:Agent自主學習與改進機制

【智能Agent場景實戰指南 Day 21】Agent自主學習與改進機制 文章內容 開篇 歡迎來到"智能Agent場景實戰指南"系列的第21天!今天我們將深入探討智能Agent的自主學習與改進機制——這是使Agent能夠持續提升性能、適應動態環境的核心能力。在真實業務場景…

微信小程序中英文切換miniprogram-i18n-plus

原生微信小程序使用 miniprogram-i18n-plus第一步:npm install miniprogram-i18n-plus -S安裝完成后,會在項目文件文件夾 node_modules文件里生成 miniprogram-i18n-plus, 然后在工具欄-工具-構建npm,然后看到miniprogram_npm里面…

LeetCode 127:單詞接龍

LeetCode 127:單詞接龍問題本質:最短轉換序列的長度 給定兩個單詞 beginWord 和 endWord,以及字典 wordList,要求找到從 beginWord 到 endWord 的最短轉換序列(每次轉換僅改變一個字母,且中間單詞必須在 wo…

docker搭建ray集群

1. 安裝docker 已安裝過docker 沒安裝流程 啟動 Docker 服務: sudo systemctl start docker sudo systemctl enable docker # 設置開機即啟動docker驗證 Docker 是否安裝成功: docker --version2. 部署ray # 先停止docker服務 systemctl stop docker…