日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kubernetes(k8s)

發布時間:2024/7/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kubernetes(k8s) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用部署演進過程


我們從上圖可以看到,應用越來越看重應用本身了,慢慢的不受物理機的差異,不受操作系統的差異,開發者可以花更多精力去到應用本身。

k8s概念

簡單理解,k8s就是傳統的云平臺上的linux。

kubernetes是一個以Google Borg(google內部容器管理平臺)為原型,重新設計和實現的容器管理和調度編排工具。
2014年由谷歌開源。
同樣功能的工具還有docker公司的Swarm和apache的Mesos,但目前kubernetes好像笑到了最后。

容器編排管理平臺

k8s可以以容器組pod為基本編排和調度單位
k8s提供資源分配管理功能
k8s提供健康檢查,伸縮,滾動升級功能
k8s提供聲明式的對象配置模型

微服務架構平臺

k8s提供服務發現與內部路由
k8s提供對服務的快速部署和自動的負載均衡

可移植云平臺

k8s被各大云廠商承認并支持,在各個云平臺之上,又搞了一層通用平臺,即可實現跨云移植

k8s架構


k8s集群是由一群節點(node)組成,這些節點可能部署在物理服務器或云服務器上。
每個節點都安裝了node組件,node組件是真正運行負載的組件
另外有個特殊節點上安裝了master組件,那這個節點也就是master節點

master組件

集群的控制中心,每個集群至少一個master組件,
高可用就多個master節點裝多個master組件

master組件包含:apiserver,etcd數據庫,controller manager,scheduler
apiserver是master組件的核心,提供各種api接口,是整個集群的唯一入口,其他master組件都通過調用api接口實現各自的功能
scheduler通過apiserver接口監聽新建pod副本信息,通過調度算法為該pod選擇一個最合適的node節點,調度算法包括先預選出一批預選節點,再優選處一個積分最高的節點,調度算法也可自定義配置
controller manager是集群內各種controller資源的核心管理者,controller資源有集群內的node,pod副本,服務端點,命名空間,服務賬號,資源配額等。當某個node宕機時,controller manager就會及時發現并執行修復流程,保證集群始終可用。
etcd數據庫是一個高效的k-v數據庫,存儲著集群中所有的對象和狀態。一般和master組件安裝在同一個node上,高可用模式需要部署數據量集群

node組件

通過code controller可以動態的在集群中添加或刪除node資源
node組件包含:kubelet,kube-proxy
kubelet組件是node中唯一一個以非容器形式進程組件,節點啟動就被自動拉起,常駐節點中,也稱節點管家,管理節點使用狀況,定期向master匯報,是master node和worker node連接的橋梁。
kube-proxy組件就是個代理,主要是負責將到達的請求負載均衡的轉發到后端的多個pod實例上。
一個node組件管著一批pod在執行任務

pod

pod是集群的調度基本單元。
是一個有特定關系的容器的集合。
一個pod就代表集群中的一個進程。
pod一般不由用戶創建,pod的ip也是不穩定的。

kubectl工具

最左邊的kubectl是一個k8s的命令行工具,用戶使用命令行的方式與集群交互

k8s概念

k8s對象:

一種持久化用于表示集群狀態的實體,一般使用yaml文件描述對象,對象信息包括有哪些容器在運行,運行在哪個node上,有哪些可用資源,應用的各種策略(重啟策略,容錯策略等)。
所有k8s對象狀態的集合,就是整個k8s集群的狀態。
通過kubectl工具或者api可以直接管理k8s對象。

可以類比java中的對象的概念,k8s對象,也有屬性,方法,另外還有狀態信息

class k8s{// 對象的類型,包括Pod,Service,Deployment等Kind kind;//對象的元數據,包括name,namespace,labels,annotationsMetadata metadata;//對象的規格信息,比如replicas(表示副本信息),selector(標簽匹配)等Spec spec;//增刪改查等方法public Return method(){...}//對象狀態,保存在etcd數據庫中Status status; }
Name和UID

集群中的所有k8s對象,都是由name和UID明確標識。
不同類型對象的name可以是一樣的。
UID是每個實例化的對象唯一一個,而且是整個集群的生命周期內唯一。
可以用api通過對象的name訪問到該對象:
/api/{version}/namespaces/{namespace}/{kind}/name

namespace

namespace不僅僅是個屬性,本身也是一個對象
作用是將物理集群劃分為多個虛擬集群
namespace直接完全隔離,常用作隔離不同的用戶權限
k8s集群內置3個namespace:default,kube-system,kube-public。

label

label標簽是用于建立集群對象直接的靈活的,松耦合的多維關聯關系。
本質上就是k-v鍵值對。
一個對象上可以有多個標簽
不同類型的對象,可以通過相同的標簽建立關聯關系
作用:為了標識對象,選擇出對象

annotations

annotations注解,可以將任意非標識性元數據附加到對象上
annotations本質也是k-v鍵值對
一般存對象的版本信息,時間戳等。

總結

以上是生活随笔為你收集整理的kubernetes(k8s)的全部內容,希望文章能夠幫你解決所遇到的問題。

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