在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Kubernetes組件pod核心原理

Linux愛好者 ? 來源:CSDN博客 ? 作者:inicho ? 2021-09-02 09:27 ? 次閱讀

1. 核心組件原理 —— pod 核心原理

1.1 pod 是什么

pod 也可以理解是一個容器,裝的是 docker 創建的容器,也就是用來封裝容器的一個容器;

pod 是一個虛擬化分組, 有自己的 IP 地址和主機名 hostname,利用 namespace 進行資源隔離,相當于一臺獨立沙箱環境;

pod 相當于一臺獨立主機,內部可以封裝一個或多個容器(通常是一組相關的容器),內部容器之間訪問采用 localhost。

1.2 pod 用來干什么

通常情況下,在服務部署的時候,使用 pod 來管理一組相關的服務(一個 pod 中要么部署一個服務,要么部署一組有關系的服務)。如下圖是部署了一組有關系的服務的結構圖,其中 C 表示容器(container),下面的 pod 里就有很多個容器。

如何理解一組相關的服務?

如下圖:有一個請求是訪問 Nginx,然后部署了 Nginx 的容器就把請求轉發給部署了 web 服務的容器,web 再訪問數據庫,然后請求會依次返回來數據,最后再返回給用戶。因此在 鏈式調用的調用鏈路上的服務 叫做一組相關的服務。

1.3 實現 web 服務集群

只需要復制多個 pod 的副本即可,這也是 k8s 管理的先進之處。k8s 如果要進行擴容或縮容,只需要控制 pod 的數量即可。比如上面那個部署模式,服務集群就是復制多個這樣的 pod。

1.4 pod 底層網絡和數據存儲是如何進行的

前面說過 pod 內部的容器也是一個獨立的沙箱環境,因此也有自己的 ip 和 端口。如果內部容器還是通過 ip:port 來通信,相當于還是遠程訪問,這樣的話性能會受到一定的影響。如何提高內部容器之間訪問的性能呢?

pod 底層

pod 內部容器創建之前,必須先創建 pause 容器。pause 有兩個作用:共享網絡和共享存儲。

每個服務容器共享 pause 存儲,不需要自己存儲數據,都交給 pause維護。

pause 也相當于這三個容器的網卡,因此他們之間的訪問可以通過 localhost 方式訪問,相當于訪問本地服務一樣,性能非常高(就像本地幾臺虛擬機之間可以 ping 通)。

2. ReplicaSet 副本控制器

2.1 副本控制器基本理解

作用:管理控制 pod 副本(服務集群)的數量,以使其永遠與預期設定的數量保持一致。例如:replicas = 3 (創建 3 個副本,這是提前設置好的)

當副本設置為 3 時,副本控制器將會永遠保證副本數量為 3。因此當有 pod 服務宕機時(如上面第 3 個 pod),那副本控制器會立馬重新創建一個新的 pod,就能夠保證副本數量一直為預先設定好的 3 個。

2.2 ReplicaSet 和 ReplicationController 的區別

ReplicaSet 和 ReplicationController 都是副本控制器,其中:

相同點:都有前面 2.1 節所描述的功能

不同點:標簽選擇器的功能不同。ReplicaSet 可以使用標簽選擇器進行 單選 和 復合選擇;而 ReplicationController 只支持 單選操作。

什么意思呢?

假設下面有下面兩個不同機器上的 Node 結點,如何知道它們的 pod 其實都是相同的呢?答案是通過標簽。

給每個 pod 打上標簽 ( key=value 格式,如下圖中的 app=web, release=stable,這有兩個選項,相同的pod副本的標簽是一樣的),于是副本控制器可以通過標簽選擇器 seletor 去選擇一組相關的服務。一旦 selector 和 pod 的標簽匹配上了,就表明這個 pod 是當前這個副本控制器控制的,表明了副本控制器和 pod 的所屬關系。如下圖中 seletor 指定了 app = web 和 release=stable 是復合選擇,要用 ReplicaSet 才能實現若用 ReplicationController 的話只能選擇一個,如只選擇匹配app=web標簽。這樣下面的 3 個 pod 就歸這個副本控制器管。

可見 ReplicaSet 功能更齊全,所以在新版的 k8s 中,建議使用 ReplicaSet 作為副本控制器,不再使用 ReplicationController。

3. Deployment 部署對象

3.1 滾動更新

ReplicaSet 副本控制器可以永久保持 pod 副本的數量。但是項目的需求在不斷的迭代、更新,項目在不斷發版。那如何做到服務更新?難道把服務停掉再把新版本部署上去嗎?當然不是,答案是用滾動更新。就是重新創建一個 pod (v2版本) 來代替 之前的 pod (v1版本)。

那是如何滾動更新的呢?涉及到下面要講到的部署模型。

3.2 部署模型

單獨的 ReplicaSet 是不支持滾動更新的,Deployment 對象支持滾動更新,通常和 ReplicaSet 一起使用。

需要滾動更新時的步驟:

Deployment 建立新的 Replicaset

Replicaset 重新建立新的 pod

所以它們之間是有層次關系的,Deployment 管 Replicaset,Replicaset 維護 pod。在更新時刪除的是舊的 pod,老版本的 ReplicaSet 是不會刪除的,所以在需要時還可以回退以前的狀態。

4. StatefulSet 部署有狀態服務

4.1 引入定義

思考:如果 MySQL(有狀態服務) 使用容器化部署,會存在什么問題?

容器都是有生命周期的,一旦宕機數據就很可能丟失

pod 也有生命周期的,用 pod 部署時把 pod 集群副本重啟以后也可能會出現數據丟失

因此對 k8s 來說,不能使用 Deployment 部署有狀態的服務。通常情況下,Deployment 被用來部署無狀態服務。然后 StatefulSet 就是為了解決有狀態服務使用容器化部署的一個問題。

4.2 如何理解狀態服務

有狀態服務

有實時的數據需要存儲

在有狀態服務集群中,如果把某一個服務抽離出來,一段時間后再加入回集群網絡,此后集群網絡會無法使用

無狀態服務

沒有實時的數據需要存儲

在無狀態服務集群中,如果把某一個服務抽離出去,一段時間后再加入回集群網絡,對集群服務無任何影響,因為它們不需要做交互,不需要數據同步等等。

4.3 部署模型

StatefulSet 的部署模型和 Deployment 的很相似。比如下圖,借助 PVC(與存儲有關) 文件系統來存儲的實時數據,因此下圖就是一個有狀態服務的部署。在 pod 宕機之后重新建立 pod 時,StatefulSet 通過保證 hostname 不發生變化來保證數據不丟失。因此 pod 就可以通過 hostname 來關聯(找到) 之前存儲的數據。

原文鏈接:https://blog.csdn.net/qq_43280818/article/details/106910187

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 核心板
    +關注

    關注

    5

    文章

    1118

    瀏覽量

    30657
  • nginx
    +關注

    關注

    0

    文章

    164

    瀏覽量

    12509

原文標題:Kubernetes 核心組件原理梳理

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    詳解Kubernetes中的Pod調度親和性

    Kubernetes(K8s)中,Pod 調度親和性(Affinity) 是一種高級調度策略,用于控制 Pod 與節點(Node)或其他 Pod 之間的關聯(親和)或反關聯(反親和
    的頭像 發表于 06-07 13:56 ?96次閱讀

    Kubernetes Helm入門指南

    Helm 是 Kubernetes 的包管理工具,它允許開發者和系統管理員通過定義、打包和部署應用程序來簡化 Kubernetes 應用的管理工作。Helm 的出現是為了解決在 Kubernetes
    的頭像 發表于 04-30 13:42 ?1736次閱讀
    <b class='flag-5'>Kubernetes</b> Helm入門指南

    Kubernetes負載均衡器MetalLB介紹

    Kubernetes中一個應用服務會有一個或多個實例,每個實例(Pod)的IP地址由網絡插件動態隨機分配(Pod重啟后IP地址會改變)。為屏蔽這些后端實例的動態變化和對多實例的負載均衡,引入了 Service這個資源對象。
    的頭像 發表于 03-18 16:24 ?318次閱讀
    <b class='flag-5'>Kubernetes</b>負載均衡器MetalLB介紹

    Kubernetes中部署MySQL集群

    一般情況下 Kubernetes 可以通過 ReplicaSet 以一個 Pod 模板創建多個 pod 副本,但是它們都是無狀態的,任何時候它們都可以被一個全新的 pod 替換。
    的頭像 發表于 03-18 16:22 ?243次閱讀
    <b class='flag-5'>Kubernetes</b>中部署MySQL集群

    Kubernetes包管理工具Helm的安裝和使用

    Helm 可以幫助我們管理 Kubernetes 應用程序 - Helm Charts 可以定義、安裝和升級復雜的 Kubernetes 應用程序,Charts 包很容易創建、版本管理、分享和分布。
    的頭像 發表于 03-13 16:06 ?701次閱讀

    Kubernetes Pod常用管理命令詳解

    Kubernetes Pod常用管理命令詳解
    的頭像 發表于 02-17 14:06 ?420次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>常用管理命令詳解

    徹底移除Calico網絡插件

    0.前言 參考文檔:https://github.com/containernetworking/cni Pod網絡插件,為了實現Pod網絡而需要的插件、組件。由于Kubernetes
    的頭像 發表于 01-23 17:26 ?922次閱讀
    徹底移除Calico網絡插件

    Kubernetes:構建高效的容器化應用平臺

    init初始化集群,按照提示配置kubeconfig文件,它包含集群連接信息。從節點通過kubeadm join命令加入集群。 PodKubernetes 中最小的可部署單元,一個 Pod 可以包含一
    的頭像 發表于 01-23 15:22 ?290次閱讀

    使用 Flexus 云服務器 X 實例部署 Kubernetes 圖形化管理平臺

    Kubernetes 作為當今最流行的容器編排平臺,隨著云計算、微服務架構和 DevOps 文化的普及,Kubernetes 在自動化部署、擴展和管理容器化應用程序方面扮演著越來越重要的角色。未來
    的頭像 發表于 01-21 16:14 ?298次閱讀
    使用 Flexus 云服務器 X 實例部署 <b class='flag-5'>Kubernetes</b> 圖形化管理平臺

    Kubernetes的CNI網絡插件之flannel

    Kubernetes設計了網絡模型,但卻將它的實現講給了網絡插件,CNI網絡插件最重要的功能就是實現Pod資源能夠跨主機通信。
    的頭像 發表于 01-02 09:43 ?743次閱讀

    重新分配pod節點

    1、軟件包下載 去github上下載較新的Kubernetes軟件包https://github.com/ ? ? ? ? ? 2、升級說明 升級包括master節點升級和node節點的升級,本章
    的頭像 發表于 01-02 09:17 ?398次閱讀
    重新分配<b class='flag-5'>pod</b>節點

    艾體寶與Kubernetes原生數據平臺AppsCode達成合作

    虹科姐妹公司艾體寶宣布與Kubernetes 原生數據平臺 AppsCode達成正式合作,致力于將其核心產品KubeDB引入中國市場,為企業提供專業、高效的云原生數據庫管理解決方案。
    的頭像 發表于 12-16 15:07 ?600次閱讀

    Kubernetes集群搭建容器云需要幾臺服務器?

    Kubernetes集群搭建容器云需要幾臺服務器?至少需要4臺服務器。搭建容器云所需的服務器數量以及具體的搭建步驟,會根據所選用的技術棧、業務規模、架構設計以及安全需求等因素而有所不同。以下是一個基于Kubernetes集群的容器云搭建的概述:
    的頭像 發表于 10-21 10:06 ?405次閱讀

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團隊(被 VMWare 收購)開源的 Kubernetes 集群備份、遷移工具。
    的頭像 發表于 08-05 15:43 ?580次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b>集群

    如何使用Kubeadm命令在PetaExpress Ubuntu系統上安裝Kubernetes集群

    Kubernetes,通常縮寫為K8s,是一個開源的容器編排平臺,旨在自動化容器化應用的部署、擴展和管理。有了Kubernetes,您可以輕松地部署、更新和擴展應用,而無需擔心底層基礎設施。
    的頭像 發表于 07-15 13:31 ?1069次閱讀
    如何使用Kubeadm命令在PetaExpress Ubuntu系統上安裝<b class='flag-5'>Kubernetes</b>集群
    主站蜘蛛池模板: 日本黄色免费网址 | 日韩三级中文字幕 | 在线高清视频大全 | 欧美一级高清黄图片 | 日本黄色大片在线观看 | 欧美亚洲综合另类成人 | 国产尤物在线视频 | 成人午夜影院在线观看 | 一级特黄aa大片一又好看 | 加勒比黑人喝羽月希奶水 | 色涩网站在线观看 | 婷婷综合网站 | 在线亚洲色图 | 亚洲欧美成人网 | 天天狠狠弄夜夜狠狠躁·太爽了 | 美女视频黄a全部免费看小说 | 人人爱爱人人 | 2021精品综合久久久久 | 黄黄网| 四虎影院2022| 天天摸天天看天天爽 | 亚洲综合成人在线 | 亚洲天天做夜夜做天天欢人人 | 久久99国产亚洲高清观看首页 | 日本一区二区免费看 | 极品美女写真菠萝蜜视频 | 五月婷婷色网 | 天天色天天摸 | 欧美黄色片免费 | 你懂的网址在线观看 | 欧美日韩不卡码一区二区三区 | 五月天激激婷婷大综合丁香 | 毛片免| 3344在线 | 久久综合九色综合欧洲色 | free 欧美| av72成人 | 伊人久久99 | 日韩一级在线播放免费观看 | 一级片视频在线 | 曰本aaaaa毛片午夜网站 |