Kubernetes 關鍵組件和概念(二)

来源:https://www.cnblogs.com/smallKilts/archive/2023/06/26/17505913.html
-Advertisement-
Play Games

### 序 上一篇我們介紹了 k8s 的基本架構,我們在這篇文章將介紹 `Kubernetes` 關鍵組件和概念。 還是先來一張圖: ![1_2pdatNn7KzcQZpc8cOALOQ.webp][1] 根據上圖我們分別對`Deployment`、`ReplicaSet`、`Pod`詳細的介紹,其 ...


上一篇我們介紹了 k8s 的基本架構,我們在這篇文章將介紹 Kubernetes 關鍵組件和概念。

還是先來一張圖:

1_2pdatNn7KzcQZpc8cOALOQ.webp

根據上圖我們分別對DeploymentReplicaSetPod詳細的介紹,其他的幾個在上一篇也做了介紹:

Deployment

DeploymentKubernetes 中的資源對象,為應用程式提供聲明性更新。部署允許你描述應用程式的生命周期。也就是說他的主要作用就是管理和控制 Pod 和 ReplicaSet,監控它們運行在用戶所期望的狀態中。例如應用程式使用哪些鏡像像、應該有的 Pod 數量以及更新它們的方式。

ReplicaSet

ReplicaSet 是一個運行 Pod 的多個實例並保持指定的 Pod數量不變的進程。目的就是在任何時間內維持集群中運行的指定數量的 Pod 實例,以防止用戶在 Pod 發生故障或無法訪問時失去對其應用程式的訪問許可權,如果監控到某一個Pod不能繼續服務的時候,他會確保我們的應用程式Pod總體服務數量保持在我們期望的數量,然後再重新啟動一個Pod

這裡說一下Replication ControllerReplicaSetReplication Controller是一個較老的版本,後面被新版本ReplicaSet取代,不過他們的作用是類似的。

我們在實時情況下,通常不會手動創建或管理ReplicaSet甚至 Pod, 我們會使用Deployment的資源類型在 Kubernetes 中部署 Pod。該Deployment會在後臺自動為我們創建一個ReplicaSet,然後該ReplicaSet負責創建和管理Deployment文件中提到的所需數量的 Pod 和 Pod 副本。

Pod

PodKubernetes 的最小的構建塊或者說最小的部署單元。Pod 包含一組一個或多個容器。一般來說,每個Pod有一個容器。Pod 封裝了應用程式容器、存儲資源、唯一的網路 ID 以及有關如何運行容器的其他配置。如下圖:

15CA4E66D8254C57BF86EED6D05AB637.jpg

當應用程式通過 ReplicaSet 水平擴展時,Pod 就會被覆制。每個 Pod 會運行相同的容器代碼。

我們在接觸k8s的時候經常會聽到ServiceVolumesnamespace那麼這幾個的作用又是什麼呢,我們繼續向下看:

Service

在 Kubernetes 中,Service是一個實體,代表一組運行應用程式或功能組件的 Pod。該Service保存訪問策略,並負責對傳入請求強制執行這些策略
對於Service的需求源於 Kubernetes 中 pod 的生命周期很短,可以隨時更換。Kubernetes 保證給定 pod 和副本的可用性,但不保證單個 pod 的活躍性,比如一組後端 Pod 為群集內的其他前端 Pod 提供功能,前端如何找到並跟蹤要連接的 IP 地址呢?這就需要它們連接到Service,該Service將它們中繼到相關的當前正在運行的 Pod。

該Service分配一個虛擬 IP 地址,稱為 clusterIP,該地址將一直存在,直到被明確銷毀為止。該Service充當組件或應用程式之間通信的可靠端點。

對於 Kubernetes 本機應用程式,使用服務的另一種方法是直接通過 Kubernetes API Server 發出請求。API Server 自動公開並維護運行 Pod 的端點。

Volume

類似於 Docker 中的容器Volume,但 Kubernetes Volume適用於整個 Pod,並掛載在 Pod 中的所有容器上。Kubernetes 確保數據在容器重新啟動時得以保留。僅當 pod 被破壞時,該 Volume 才會被刪除。此外,一個 Pod 可以關聯多個Volume(可能是不同類型的)。

Volume 是 Pod 的一個組件,Volume 是在 Pod 規範中創建的,不能單獨刪除。

Namespace

namespace是一種將集群組織成虛擬子集群的方法,當不同的團隊或項目共用 Kubernetes 集群時就需要用到namespace。集群內支持任意數量的namespace,每個namespace在邏輯上彼此分離,能夠相互通信,但是不能相互嵌套。
Kubernetes 中的任何資源都存在於default這個namespace或由集群操作員創建的namespace中。

總結

這篇文章主要介紹了k8s裡面一些重要概念,DeploymentReplicaSetPod以及ServiceVolumesnamespace,當然還有很多的一些抽象概念,比如Ingress等,總之k8s裡面一堆的東西,一時半會兒也是理解不完的,這個需要長久的去學習深挖,這裡就不過多的去一一介紹了,接下來會直接去介紹怎麼使用k8s以及使用k8s的一些問題。

轉載:風向閱讀 - Kubernetes 系列:Kubernetes 關鍵組件和概念(二)
地址:https://www.aiweimeng.top/archives/26.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ### 序 前面介紹了k8s組件和對象的一些基本概念,瞭解了k8s具體是做什麼的以及架構,那麼接下來我們開始介紹怎麼去安裝k8s,這裡我們以windows為例,其他平臺可以參考Kubernetes官方文檔,其實安裝方式都是類似的。 ### 先決條件 要在系統中安裝 Kubernetes,以下是一些需 ...
  • 某日二師兄參加XXX科技公司的C++工程師開發崗位第26面: > 面試官:`deque`用過嗎? > > 二師兄:說實話,很少用,基本沒用過。 > > 面試官:為什麼? > > 二師兄:因為使用它的場景很少,大部分需要性能、且需要自動擴容的時候使用`vector`,需要隨機插入和刪除的時候可以使用` ...
  • ## java獲取cpu核心數目 >```java >int processors = Runtime.getRuntime().availableProcessors(); >``` ...
  • > 本文首發於公眾號:Hunter後端 > 原文鏈接:[celery筆記八之資料庫操作定時任務](https://mp.weixin.qq.com/s/iM0VxVMagmRNeG2VIc01pg) 前面我們介紹定時任務是在 celery.py 中的 `app.conf.beat_schedule` ...
  • > 本文節選自筆者博客:[https://www.blog.zeeland.cn/archives/019hasaa](https://www.blog.zeeland.cn/archives/019hasaa) # 前言 如果你經常閱讀論文,那麼你肯定會遇到以下幾個問題: - 論文晦澀難懂看不明白 ...
  • 本文將通過閱讀AnnotationConfigApplicationContext源碼,分析Spring啟動流程。 # 創建AnnotationConfigApplicationContext ```java AnnotationConfigApplicationContext applicatio ...
  • # 概念 在 Java 中,`char` 和 `byte` 類型占用的存儲空間是不同的。 1. `char` 類型:`char` 是 16 位無符號的 Unicode 字元類型,用於表示單個字元。在 Java 中,`char` 類型占用 2 個位元組(16 位)的存儲空間。 2. `byte` 類型: ...
  • 當我們在開發項目時,有時需要用到外部依賴組件,例如當我們需要Json序列化的時候需要用到FastJson組件,我們可以通過下載對應jar包載入到項目中。但當一個大的項目同時需要依賴各種各樣的外部服務,就存在著配置繁瑣、依賴衝突等問題,因此可以通過maven來完成對應的依賴管理功能。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...