日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

k8s 基础介绍及概念

發布時間:2024/2/28 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s 基础介绍及概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

k8s 的介紹

k8s 的介紹
容器化相對于傳統虛擬化優勢
選擇docker容器部署要使用k8s的原因
k8s Master節點和Node節點各個節點組件間的關系
?Master節點組件介紹
Node節點組件介紹
k8s 核心概念
? ??1. Deployment :
? ??2. Service:
? ??3. Namespace:
? ??4. Label:
? ??5. Label選擇器:
? ??6. Annotation:
? ??7. Ingress:


容器化相對于傳統虛擬化優勢

如果要選擇Kubernetes ,首先就需要知道為什么會選擇容器化。

? ? 傳統方式是將所有應用直接部署在同一個物理機器節點上,這樣每個App的依賴都是完全相同的,無法做到App之間隔離,當然,為了隔離,我們也可以通過創建虛擬機的方式來將App部署到其中,但這樣太過繁重,移植性太差,故比虛擬機更輕便的Docker技術出現,現在我們通過部署Container容器的技術來部署應用,全部Container運行在容器引擎上即可。
? ? 既然嫌棄虛擬機繁重,移植性太差,想用Docker,那好,你用吧,怎么用呢?手動一個一個創建?當然不,故ks8技術便出現了,以Kubernetes 為代表的容器集群管理系統,這時候就該上場表演了。

選擇docker容器部署要使用k8s的原因

k8s 全稱Kubernetes(以下簡稱k8s,k和s之間有8個字母),是Google 開源的容器管理系統,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。

k8s作為容器編排調度引擎 ,能夠相比沒有這個一個平臺有如下好處:

(1) 簡化應用部署
(2)提高硬件資源利用率
(3)健康檢查和自修復
(4)自動擴容縮容
(5)服務發現和負載均衡

Kubernetes Master節點和Node節點各個節點組件間的關系

?

Master節點組件介紹

Kubernetes 中Master指的是集群控制節點,每個Kubernetes 集群中有一個master節點負載整個集群的管理和和控制,基本Kubernetes 的所有控制命令都發給它,它負責具體執行過程,我們命令都是在master節點上運行的。

**api server:**負責對外提供restful的Kubernetes API服務,提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API 注冊和發現等機制。我們操作kubectl 和其他Master組件都通過調用api server提供的rest接口實現各自的功能,如controller就是通過api server來實時監控各個資源的狀態的。

**etcd:**是 Kubernetes 提供的一個高可用的鍵值數據庫,用于保存集群所有的網絡配置和資源對象的狀態信息,也就是保存了整個集群的狀態。數據變更都是通過api server進行的。整個kubernetes系統中一共有兩個服務需要用到etcd用來協同和存儲配置,分別是:
1)網絡插件flannel,其它網絡插件也需要用到etcd存儲網絡的配置信息;
2)kubernetes本身,包括各種資源對象的狀態和元信息配置。

**scheduler:**監聽新建pod副本信息,并通過調度算法為該pod選擇一個最合適的Node節點。會檢索到所有符合該pod要求的Node節點,執行pod調度邏輯。調度成功之后,會將pod信息綁定到目標節點上,同時將信息寫入到etcd中。一旦綁定,就由Node上的kubelet接手pod的接下來的生命周期管理。Kubernetes目前提供了調度算法,但是同樣也保留了接口,用戶可以根據自己的需求定義自己的調度算法。

**controller manager:**負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等。每個資源一般都對應有一個控制器,這些controller通過api server實時監控各個資源的狀態,controller manager就是負責管理這些控制器的。當有資源因為故障導致狀態變化,controller就會嘗試將系統由“現有狀態”恢復到“期待狀態”,保證其下每一個controller所對應的資源始終處于期望狀態。比如我們通過api server創建一個pod,當這個pod創建成功后,api server的任務就算完成了。其中一個pod出現問題,controller會自動恢復創建新的pod。

Node節點組件介紹

除了Master,k8s 集群中其他機器被稱為node節點,node節點才是k8s集群中中工作負載節點,每個node節點都會被Master節點分配工作負載。當某個node宕機是,其上工作被Master分配到其他節點上去。

?

kubelet:?會監視已分配給節點的pod,負責pod的生命周期管理,同時與Master密切協作,維護和管理該Node上面的所有容器,實現集群管理的基本功能。即Node節點通過kubelet與master組件交互,可以理解為kubelet是Master在每個Node節點上面的agent。本質上,它負責使Pod的運行狀態與期望的狀態一致。

kube-proxy:?是實現service的通信與負載均衡機制的重要組件,將到service的請求轉發到后端的pod上。

docker-engine(docker):?是負責容器的創建和管理工作。

Pod:?最小部署單元,一個Pod 有一個或多個容器組成,容器中共享存儲和網絡,在同一臺docker主機上運行。

之所以采用pod作為k8s的最小部署單元是:

原因一:在一組容器相互關聯的情況下,我們難以對整體進行檢點判斷及恢復等操作。比如一個容器死亡了,不知道是否影響整體的運行。如果引入pod引入業務無關的Pause容器作為pod的根容器,以他的狀態代表容器組的狀態。

原因二:pod里面多個容器共享pause的容器IP,共享容器掛接的volume,簡化了管理密切業務容器直接的通信和文件共享問題。

K8S 核心概念

1. Deployment :

定義:
? ? ? Deployment 的主要功能是保證Pod的數量、健康,彈性收縮等、回滾功能(當升級 pod 鏡像或者相關參數的時候,如果有錯誤,可以回滾到上一個穩定版本),版本記錄(每一次對 Deployment 的操作都能保存下來)。暫停和啟動(升級的時候,能隨時暫停和啟動)。
場景:

  • 使用Deployment來創建ReplicaSet。ReplicaSet在后臺創建pod。檢查啟動狀態,看它是成功還是失敗。
  • 然后,通過更新Deployment的PodTemplateSpec字段來聲明Pod的新狀態。這會創建一個新的ReplicaSet,Deployment會按照控制的速率將pod從舊的ReplicaSet移動到新的ReplicaSet中。
  • 如果當前狀態不穩定,回滾到之前的Deployment revision。每次回滾都會更新Deployment的revision。
  • 擴容Deployment以滿足更高的負載。
  • 暫停Deployment來應用PodTemplateSpec的多個修復,然后恢復上線。
  • 根據Deployment 的狀態判斷上線是否hang住了。
  • 清除舊的不必要的 ReplicaSet。

2. Service:

定義:
? ? ? Pod存在生命周期,有銷毀,有重建,無法提供一個固定的訪問接口給客戶端,存在生命周期,屬于不可再生類組件。而在動態和彈性的管理模式下,Service為該類Pod對象提供了一個固定、統一的訪問接口和負載均衡能力。

3. Namespace:

定義:
? ? ??Kubernetes可以使用Namespaces(命名空間)創建多個虛擬集群。
說明:
? ? ?用于實現多租戶的資源隔離。Namespace通過集群內部的資源對象“分配”到不同的Namespace中,形成邏輯上分組不同的項目、小組或用戶組,從而使不同的分組在共享整個集群的資源,同時還能被k8s分別管理。
場景:
? ? ? 當團隊或項目中具有許多用戶時,可以考慮使用Namespace來區分,a如果是少量用戶集群,可以不需要考慮使用Namespace,如果需要它們提供特殊性質時,可以開始使用Namespace。

4. Label:

定義:
? ? ?Labels其實就一對 key/value ,被關聯到對象上,標簽的使用我們傾向于能夠標示對象的特殊特點,并且對用戶而言是有意義的(就是一眼就看出了這個Pod是尼瑪數據庫),但是標簽對內核系統是沒有直接意義的。標簽可以用來劃分特定組的對象(比如,所有女的),標簽可以在創建一個對象的時候直接給與,也可以在后期隨時修改,每一個對象可以擁有多個標簽,但是,key值必須是唯一的
說明:
? ? ??通過Label進行對象弱關聯,靈活地分類和選擇不同服務或業務,讓用戶根據自己特定的組織結構以松耦合方式進行服務部署。Label是一對KV,對用戶而言非常有意義的,但對K8S本身而言沒有直接意義的。Label可以在創建對象時指定,也可以在后期修改,每個對象可以擁有多個標簽,但key值必須是唯一的。

5. Label選擇器:

定義:

? ? ? 與Name和UID?不同,標簽不需要有唯一性。一般來說,我們期望許多對象具有相同的標簽。

通過標簽選擇器(Labels Selectors),客戶端/用戶 能方便辨識出一組對象。標簽選擇器是kubernetes中核心的組成部分。

6. Annotation:

定義:

? ? ? 可以使用Kubernetes Annotations將任何非標識metadata附加到對象。客戶端(如工具和庫)可以檢索此metadata。

說明:
? ? ? Annotation與Label類似,也使用key/value鍵值對的形式進行定義。

? ? ?Label具有嚴格的命名規則,它定義的是Kubernetes對象的元數據(Metadata),并且用于Label Selector。

? ? ? Annotation 則是用戶任意定義的“附加”信息,以便于外部工具進行查找。

? ? ? 可以使用Labels或Annotations將元數據附加到Kubernetes對象。Labels 可用于選擇對象并查找滿足某些條件的對象集合。相比之下,Annotations不用于標識和選擇對象。

場景:

? ? ? 日志庫、監控庫、分析庫等資源庫的地址信息;

? ? ? 程序調試工具信息,例如工具名稱、版本號等;

? ? ? 團隊的聯系信息,例如電話號碼、負責人名稱、網址等。

7. Ingress:

? ? 可以給Ingress配置提供外部可訪問的URL、負載均衡、SSL、基于名稱的虛擬主機等。用戶通過POST Ingress資源到API server的方式來請求ingress

總結

以上是生活随笔為你收集整理的k8s 基础介绍及概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。