科普文:K8S中常見知識點梳理

簡單說一下k8s集群內外網絡如何互通的

????????要在 Kubernetes(k8s)集群內外建立網絡互通,可以采取以下措施:

  1. 使用service:?使用Service類型為NodePort或LoadBalancer的Kubernetes服務。這可以使服務具有一個公共IP地址或端口,以便在集群內或外部訪問該服務。

  2. 使用Ingress:?配置Kubernetes Ingress資源。Ingress是一種路由機制,它將外部流量路由到Kubernetes集群中的特定服務。可以使用Ingress控制器來實現負載均衡和SSL終止。

  3. 創建網絡策略 :?Kubernetes網絡策略允許您定義哪些Pod可以與哪些其他Pod通信,以及在什么端口上進行通信。

  4. 使用DNS:?將集群內的服務和Pod綁定到一個公共IP地址或域名。可以使用DNS記錄來實現這一點,例如在Kubernetes中使用外部DNS插件。

  5. 配置網絡代理 :?網絡代理是一種可選的解決方案,它可以幫助在Kubernetes集群內外之間建立網絡互通。可以使用Ingress控制器或使用第三方代理解決方案,如NGINX或HAProxy。

描述下Pod的創建過程

????????描述一:

  1. 定義Pod:首先,需要定義一個Pod的配置文件,它描述了要創建的Pod的特征,例如Pod名稱、容器映像、容器端口等。

  2. 發送Pod配置文件:將Pod配置文件發送到Kubernetes集群中的API服務器。可以使用kubectl命令行工具或API客戶端向API服務器發送配置文件。

  3. 調度器分配節點:Kubernetes調度器將Pod分配給一個節點。調度器考慮節點資源的可用性、Pod的資源需求以及其他調度策略來做出決策。

  4. 容器創建:一旦Pod被調度到節點上,kubelet代理將創建Pod中定義的每個容器,并使用相應的容器映像來填充它們。

  5. 分配IP地址:Kubernetes分配一個IP地址給Pod,并將其添加到集群的網絡中,以便其他Pod可以與其通信。

  6. 啟動容器:一旦Pod中的所有容器都已創建并分配IP地址,kubelet將啟動每個容器,并開始在其內部運行應用程序。

  7. 容器監控:Kubernetes會持續監控Pod中的每個容器,并在出現故障或崩潰時重新啟動它們。

圖片

????????描述二:

  1. Pod 的創建流程 kubectl向API Server發送創建請求ReplicaSet,API Server請求存儲在etcd Controller Manager接受到通知

  2. Controller Manager通知到

  3. Scheduler Scheduler通知Worker節點

  4. API Server通知到Worker節點的kubelet

  5. kubelet指示當前節點上的Container Runtime運行對應的容器

  6. Container Runtime下載鏡像并啟動容器

k8s中Pod的終止過程

????????在 Kubernetes 中,一個 Pod 由一個或多個容器組成,因此 Pod 的終止過程實際上涉及到容器的終止以及 Pod 對應的資源的釋放等多個方面。

????????當 Kubernetes 接收到一個 Pod 的終止請求時,它將執行以下步驟:

  1. 從 Service 中刪除 Pod:如果 Pod 正在 Service 中被使用,Kubernetes 會將其從 Service 中刪除,以確保不再將流量發送到該 Pod。

  2. 關閉容器:Kubernetes 向 Pod 中的每個容器發送一個終止請求,容器將開始執行關閉的預定義步驟。這些步驟包括停止正在運行的進程、關閉網絡連接、清理文件系統等等。

  3. 發送 SIGTERM 信號:當 Kubernetes 接收到終止 Pod 的請求時,它將首先向容器發送 SIGTERM 信號,讓容器開始優雅地終止。這個信號的作用是告訴容器它需要開始終止了,但是需要等待一定的時間來完成正在運行的任務和釋放資源。

  4. 等待容器終止:Kubernetes 將等待容器在接收到 SIGTERM 信號后完成優雅終止。在這個等待期間,Kubernetes 將不再向 Pod 中發送新的請求,但它仍會監控 Pod 的狀態。

  5. 發送 SIGKILL 信號:如果容器沒有在一定的時間內完成優雅終止,Kubernetes 將發送 SIGKILL 信號給容器,強制終止容器并釋放其資源。

  6. 清理資源:Kubernetes 將釋放 Pod 使用的所有資源,包括節點上的網絡、存儲、內存等。同時,Kubernetes 還將更新其狀態,以便管理員和其他應用程序可以獲取到最新的 Pod 信息。

????????總的來說,Kubernetes Pod 的終止過程包括了多個步驟,以確保容器能夠安全、快速地釋放資源,同時不會丟失任何數據或產生其他的副作用。

圖片

k8s中的自動伸縮有哪些方式

????????kubernetes中的自動伸縮主要有以下幾種方式:

  1. 水平自動伸縮(Horizontal Pod Autoscaler,HPA):根據 CPU 利用率、內存利用率等指標,動態地增加或減少 Pod 的數量,以滿足應用的負載需求。HPA 是 Kubernetes 中最常用的自動伸縮方式之一。

  2. 垂直自動伸縮(Vertical Pod Autoscaler,VPA):根據容器內部資源使用情況,動態地調整容器的 CPU 和內存資源請求量。VPA 可以優化容器的資源利用率,提高應用的性能和可靠性。

  3. 集群自動伸縮(Cluster Autoscaler):根據集群節點的資源利用率,動態地增加或減少節點的數量,以適應不同的負載需求。集群自動伸縮可以自動擴容或縮容集群,確保應用的高可用性和可靠性。

  4. 自定義指標自動伸縮(Custom Metrics Autoscaler,CA):根據自定義指標,動態地增加或減少 Pod 的數量。CA 可以根據應用的特殊需求,靈活地定制自動伸縮策略,提高應用的性能和可靠性。

????????總的來說,Kubernetes 提供了多種自動伸縮方式,可以根據應用的特點和需求選擇合適的自動伸縮方式,以提高應用的性能、可靠性和可擴展性。

????????無論使用哪種自動伸縮方法,Kubernetes 都會根據應用程序的需求自動調整 Pod 的數量和資源限制,以確保應用程序始終具有足夠的資源,并且可以根據需要擴展或縮減。

k8s中的故障檢測有哪些方式

????????Kubernetes 中的探針是一種用于檢查應用程序狀態的機制。

????????探針可以檢查應用程序的運行狀況、存活性和就緒狀態,并在需要時自動修復任何問題。

????????探針可以使用三種類型:readiness(就緒狀態)、liveness(存活性)、startup(啟動時)

????????Kubernetes 中的故障檢測方式包括以下幾種:

  1. Liveness Probe(存活探針):用于檢測容器是否處于正常運行狀態。如果存活探針檢測到容器內部的應用程序出現故障,Kubernetes 將會自動重啟該容器。存活探針設置方式,可以使用 HTTP 請求、TCP 連接或命令執行來設置。

  2. Readiness Probe(就緒探針):用于檢測容器是否準備好接收流量。如果就緒探針檢測到容器沒有準備好,Kubernetes 將不會將流量路由到該容器。可以使用 HTTP 請求、TCP 連接或命令執行來設置就緒探針。

  3. Startup Probe(啟動探針):用于檢測容器是否已經成功啟動。如果啟動探針檢測到容器啟動失敗,Kubernetes 將會嘗試重新啟動該容器。與存活探針和就緒探針不同,啟動探針只在容器啟動時運行一次,然后就不再運行了。

  4. Node Health Check(節點健康檢查):用于檢測節點的狀態。如果節點出現故障,Kubernetes 將會將該節點上的所有容器轉移到其他節點上。可以使用 kubeadm 自帶的 kubeadm node 命令或 kubelet 的 --healthz 選項來設置節點健康檢查。

  5. Cluster Health Check(集群健康檢查):用于檢測整個集群的狀態。可以使用 kubeadm 自帶的 kubeadm check 命令或 kubelet 的 --healthz 選項來設置集群健康檢查。此外,還可以使用 Kubernetes 官方提供的 kubeadm-diagnostics 工具來進行集群診斷。

k8s中的資源調度有哪些方式

????????Kubernetes 中的資源調度主要有以下幾種方式:

  1. 基于 CPU 和內存資源的靜態調度:在 Kubernetes 中,可以為每個 Pod 指定需要使用的 CPU 和內存資源。基于這些資源的需求,Kubernetes 會自動將 Pod 調度到具有足夠資源的節點上。這種方式稱為靜態調度,因為資源需求是在 Pod 創建時指定的,而不會隨著時間的推移而變化。

  2. 基于 CPU 和內存資源的動態調度:除了靜態調度外,Kubernetes 還支持基于 CPU 和內存資源的動態調度。在這種方式下,Kubernetes 會根據當前節點的資源使用情況,將 Pod 動態地調度到具有可用資源的節點上,從而實現資源的最優分配。

  3. 基于節點標簽的調度:Kubernetes 還支持基于節點標簽的調度。通過為節點打上不同的標簽,可以讓 Kubernetes 將特定類型的 Pod 調度到具有相應標簽的節點上。這種方式非常適合需要將不同類型的應用程序隔離開的場景。

  4. 基于節點親和性和反親和性的調度:在 Kubernetes 中,可以通過指定節點親和性和反親和性規則,來控制 Pod 被調度到哪些節點上。比如,可以指定一個 Pod 只能被調度到與指定節點具有相同標簽的節點上,或者指定一個 Pod 不能被調度到與指定節點具有相同標簽的節點上。

  5. 基于調度器插件的調度:Kubernetes 允許用戶編寫自己的調度器插件,并將其添加到 Kubernetes 集群中。通過使用這種方式,用戶可以實現定制化的調度策略,以滿足特定的需求。

k8s中的控制器(Controller)如何工作的

????????Kubernetes的控制器(Controller)是一種用于管理Kubernetes資源的控制器模式。

????????它確保系統處于期望的狀態,通過周期性地監視系統狀態,然后采取必要的操作使其達到期望狀態。

????????控制器負責監控Kubernetes資源對象的狀態,并確保資源對象的實際狀態與期望狀態匹配。

????????控制器的工作原理如下:

  1. 定義期望狀態:控制器定義資源對象的期望狀態,例如Pod應該運行在哪個節點上,有哪些容器以及運行的命令。

  2. 監控實際狀態:控制器周期性地監視系統狀態,通過 API Server 獲取資源對象的實際狀態,并與期望狀態進行比較。

  3. 執行調諧操作:如果實際狀態與期望狀態不匹配,則控制器執行必要的操作來將系統狀態調整為期望狀態。例如,如果Pod未在期望節點上運行,則控制器會調度Pod到正確的節點上。

  4. 重復以上步驟:控制器持續監視系統狀態,并根據需要執行調諧操作,直到實際狀態與期望狀態匹配為止。

????????Kubernetes提供了許多內置的控制器,如Deployment、ReplicaSet和StatefulSet,它們分別用于管理不同類型的應用程序和資源對象。

????????此外,用戶還可以編寫自定義控制器來管理自定義資源對象。

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

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

相關文章

怎么發頂會論文

AI頂會論文成功發表路徑四:寫作關_嗶哩嗶哩_bilibili 全集都有,隨手記錄一下。 講的很好,我多努力。努力靠近一下。

Open3D 計算點云的平均密度

目錄 一、概述 1.1基于領域密度計算原理 1.2應用 二、代碼實現 三、實現效果 2.1點云顯示 2.2密度計算結果 一、概述 在點云處理中,點的密度通常表示為某個點周圍一定區域內的點的數量。高密度區域表示點云較密集,低密度區域表示點云較稀疏。計算…

Redis連接Resp圖形化工具和springboot

Redis連接Resp圖形化工具和springboot 1.redis配置1.1 備份、修改conf文件1.2 Redis的其它常見配置:1.3 啟動Redis:1.4 停止服務:1.5 開機自啟: 2. resp的安裝、配置和連接:2.1 GitHub上下載2.2 開始連接redis ![在這里…

Java 集合框架:Java 中的 Set 集合(HashSet LinkedHashSet TreeSet)特點與實現解析

大家好,我是栗箏i,這篇文章是我的 “栗箏i 的 Java 技術棧” 專欄的第 017 篇文章,在 “栗箏i 的 Java 技術棧” 這個專欄中我會持續為大家更新 Java 技術相關全套技術棧內容。專欄的主要目標是已經有一定 Java 開發經驗,并希望進一步完善自己對整個 Java 技術體系來充實自…

運營商二三要素是什么?有什么意義

運營商的二要素和三要素通常指的是在用戶身份驗證過程中所使用的關鍵信息。這些要素在保障用戶信息安全、防止詐騙犯罪、維護社會秩序等方面具有重要意義。 運營商二要素 運營商二要素指的是在身份驗證過程中,需要驗證的兩個關鍵信息,通常是&#xff1a…

C++初探究

概述 C可以追溯到1979年,C之父Bjarne Stroustrup在在使用C語言研發工作時發現C語言的不足,并想要將其改進,到1983年,Bjarne Stroustrup在C語言的基礎上添加了面向對象編程的特性,設計出了C的雛形。 網址推薦 C官方文…

Docker:WARNING: Published ports are discarded when using host network mode 解決方法

在Docker中,使用主機網絡模式(host network mode)時,容器將共享主機的網絡命名空間,這意味著容器將直接使用主機的網絡接口和端口。因此,當你嘗試通過Docker的發布端口功能(publish a port&…

如何在uniapp中使用websocket?

websocket是我們經常使用到的接口,通常用于即時通訊以及K線圖這種需要實時更新數據的業務需求上,傳統的restful接口雖然可以滿足,但是你需要輪詢,這就要額外寫一堆代碼,不是很方便,用websocket就簡單很多,我們來看代碼 第一步定義全局常量、變量 const config = {host…

ActiViz實戰:ActiViz實現體繪制裁剪

文章目錄 效果預覽關鍵代碼源碼地址效果預覽 ActiViz體繪制裁剪 關鍵代碼 1、實現體繪制 FolderBrowserDialog folderDialog = new FolderBrowserDialog(); folderDialog.SelectedPath = "E:\\S100"; string

王老師 linux c++ 通信架構 筆記(三)安裝 xftp、

(11)調整 xshell 終端的字體大小,默認字體大小是 9 : (12) 共享文件夾 hgfs 的含義: (13)安裝 xftp , 傻瓜式安裝,出了修改下默認安裝位置。 操作…

.locked勒索病毒解析與防護指南

引言 隨著信息技術的飛速發展,網絡安全問題日益嚴峻,其中勒索病毒成為威脅企業和個人數據安全的重要隱患之一。在眾多勒索病毒家族中,.locked勒索病毒以其獨特的加密方式和廣泛的傳播途徑,引起了廣泛的關注。本文將從多個方面詳細…

使用redis-cli查找大key

執行命令 涉及redis-cli 連接和登錄&#xff0c;請查看&#xff1a;Redis-cli 連接Redis-CSDN博客 redis-cli -h <redis_instance_address> -p <port> -a <password> --bigkeys<redis_instance_address>&#xff1a; Redis 實例的 IP 地址。 <p…

opencv 魚眼圖像的矯正(動態參數調整)

一&#xff1a;棋盤校準參數說明(內參) 棋盤校準的方法及代碼很多&#xff0c;參見其他連接 1&#xff1a;內參矩陣 2&#xff1a;畸變系數 針對魚眼相機此處是4個參數&#xff0c;在其校準代碼中也可以知道&#xff0c;其通常的定義如下&#xff1a; data.camera_mat np.e…

報修小程序論文(設計)開題報告

一、課題的背景和意義 近些年來&#xff0c;隨著移動互聯網巔峰時期的來臨&#xff0c;互聯網產業逐漸趨于“小、輕、微”的方向發展&#xff0c;符合輕應用時代特點的各類技術受到了不同領域的廣泛關注。在諸多產品中&#xff0c;被譽為“運行著程序的網站”之名的微信小程序…

uniapp-小程序獲取用戶位置

1. 需要在微信公眾平臺進行接口的申請。選擇自己需要用的接口。 2. 在app.json文件中配置permission和requiredPrivateInfos。requiredPrivateInfos里面是你需要使用的接口。 3. 配置完成后&#xff0c;就可以使用了。 相關獲取位置API的鏈接 4. 如果要獲取當前位置到某一個指…

【在 OpenResty 中使用 Lua 獲取服務器自身的 IP 地址】

要在 OpenResty 中使用 Lua 獲取服務器自身的 IP 地址&#xff0c;可以使用 Lua 結合系統命令來獲取本地網絡接口的 IP 地址。以下是一個示例&#xff0c;展示如何實現這一點&#xff1a; 修改你的 nginx.conf 文件&#xff0c;添加一個新的 location 塊來處理獲取本地 IP 地址…

java順序表的實現

一&#xff0c;前言 hello大家好呀&#xff0c;今天淺略講講java的順序表&#xff0c;其實順序表大概一個月前就學了&#xff0c;但是由于前段時間期末一直沒寫博客&#xff0c;但是現在想想其實期末我還是有很多空余時間的&#xff0c;但是由于自己的原因耽誤了很多時間現在想…

C++面向對象的常見面試題目(二)

1. 繼承關系下&#xff0c;析構函數和構造函數執行順序&#xff1f; 構造函數按照依賴鏈&#xff0c;從強到弱構造 首先調用基類的構造函數。如果有多個基類&#xff0c;則按照它們在派生類聲明中出現的順序調用&#xff1b;接下來&#xff0c;按照它們在類中聲明的順序&…

windows USB 設備驅動開發-處理批傳輸的靜態流

在 USB 2.0 和更早版本的設備中&#xff0c;批量端點可以通過該端點發送或接收單個數據流。 在 USB 3.0 設備中&#xff0c;批量端點能夠通過該端點發送和接收多個數據流。 Windows 中 Microsoft 提供的 USB 驅動程序堆棧支持多個流。 這使客戶端驅動程序能夠將獨立的 I/O 請求…

GEE代碼實例教程詳解:長時間序列風速分析

簡介 在本篇博客中&#xff0c;我們將使用Google Earth Engine (GEE) 對長時間序列的風速數據進行分析。通過ERA5再分析數據集&#xff0c;我們可以計算2010年至2024年間的平均風速&#xff0c;并與1980年至2020年的風速數據進行比較。 背景知識 ERA5數據集 ERA5是ECMWF&am…