自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

K8s集群架構(gòu)與高可用解析

開發(fā) 架構(gòu)
Kubernetes實(shí)際是高度自動(dòng)化的資源控制系統(tǒng),將其管理的一切抽象為資源對(duì)象,大到服務(wù)器 Node 節(jié)點(diǎn),小到服務(wù)實(shí)例 Pod。

 [[276258]]

基本工作過程

Kubernetes 的核心工作過程:

  • 資源對(duì)象:Node、Pod、Service、Replication Controller 等都可以看作一種資源對(duì)象
  • 操作:通過使用 kubectl 工具,執(zhí)行增刪改查
  • 存儲(chǔ):對(duì)象的目標(biāo)狀態(tài)(預(yù)設(shè)狀態(tài)),保存在 etcd 中持久化儲(chǔ)存;
  • 自動(dòng)控制:跟蹤、對(duì)比 etcd 中存儲(chǔ)的目標(biāo)狀態(tài)與資源的當(dāng)前狀態(tài),對(duì)差異資源糾偏,自動(dòng)控制集群狀態(tài)。

Kubernetes 實(shí)際是:高度自動(dòng)化的資源控制系統(tǒng),將其管理的一切抽象為資源對(duì)象,大到服務(wù)器 Node 節(jié)點(diǎn),小到服務(wù)實(shí)例 Pod。

Kubernetes 的資源控制是一種聲明+引擎的理念:

  • 聲明:對(duì)某種資源,聲明他的目標(biāo)狀態(tài)
  • 自動(dòng):Kubernetes 自動(dòng)化資源控制系統(tǒng),會(huì)一直努力將該資源對(duì)象維持在目標(biāo)狀態(tài)。

架構(gòu)(物理+邏輯)

Kubernetes 集群,是主從架構(gòu):

  • Master:管理節(jié)點(diǎn),集群的控制和調(diào)度
  • Node:工作節(jié)點(diǎn),執(zhí)行具體的業(yè)務(wù)容器

 

K8s集群架構(gòu)與高可用解析

 

下述幾個(gè)組件,都是獨(dú)立的進(jìn)程,每個(gè)進(jìn)程都是 Go 語言編寫,實(shí)際部署 Kubernetes 集群,就是部署這些程序。

Master節(jié)點(diǎn):

  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • Node節(jié)點(diǎn):
  • kubelet
  • kube-proxy

具體,2 種角色的節(jié)點(diǎn),需要運(yùn)行的進(jìn)程和職責(zé)不同,詳細(xì)描述如下。

Master 管理節(jié)點(diǎn):管理整個(gè) Kubernetes 集群,接收外部命令,維護(hù)集群狀態(tài)。

  • apiserver: Kubernetes API Server
  • 集群控制的入口
  • 資源的增刪改查,持久化存儲(chǔ)到 etcd
  • kubectl 直接與 API Server 交互,默認(rèn)端口 6443。
  • etcd: 一個(gè)高可用的 key-value 存儲(chǔ)系統(tǒng)
  • 作用:存儲(chǔ)資源的狀態(tài)
  • 支持 Restful 的API。
  • 默認(rèn)監(jiān)聽 2379 和 2380 端口(2379提供服務(wù),2380用于集群節(jié)點(diǎn)通信)(疑問:集群節(jié)點(diǎn),是說 etcd 的集群? Master 集群?)
  • scheduler: 負(fù)責(zé)將 pod 資源調(diào)度到合適的 node 上。
  • 調(diào)度算法:根據(jù) node 節(jié)點(diǎn)的性能、負(fù)載、數(shù)據(jù)位置等,進(jìn)行調(diào)度。
  • 默認(rèn)監(jiān)聽 10251 端口。
  • controller-manager: 所有資源的自動(dòng)化控制中心
  • 每個(gè)資源,都對(duì)應(yīng)有一個(gè)控制器(疑問:作用是什么?)
  • controller manager 管理這些控制器
  • controller manager 是自動(dòng)化的循環(huán)控制器
  • Kubernetes 的核心控制守護(hù)進(jìn)程,默認(rèn)監(jiān)聽10252端口。(疑問:為什么有監(jiān)聽段口感?)

補(bǔ)充說明:

scheduler和controller-manager都是通過apiserver從etcd中獲取各種資源的狀態(tài),進(jìn)行相應(yīng)的調(diào)度和控制操作。

Node 節(jié)點(diǎn):Master 節(jié)點(diǎn),將任務(wù)調(diào)度到 Node 節(jié)點(diǎn),以 docker 方式運(yùn)行;當(dāng) Node 節(jié)點(diǎn)宕機(jī)時(shí),Master 會(huì)自動(dòng)將 Node 上的任務(wù)調(diào)度到其他 Node 上。

  • kubelet: 本節(jié)點(diǎn)Pod的生命周期管理,定期向Master上報(bào)本節(jié)點(diǎn)及Pod的基本信息
  • Kubelet是在每個(gè)Node節(jié)點(diǎn)上運(yùn)行agent
  • 負(fù)責(zé)維護(hù)和管理所有容器:從 apiserver 接收 Pod 的創(chuàng)建請(qǐng)求,啟動(dòng)和停止Pod
  • Kubelet不會(huì)管理不是由Kubernetes創(chuàng)建的容器
  • 定期向Master上報(bào)信息,如操作系統(tǒng)、Docker版本、CPU、內(nèi)存、pod 運(yùn)行狀態(tài)等信息
  • kube-proxy:集群中 Service 的通信以及負(fù)載均衡
  • 功能:服務(wù)發(fā)現(xiàn)、反向代理。
  • 反向代理:支持TCP和UDP連接轉(zhuǎn)發(fā),默認(rèn)基于Round Robin算法將客戶端流量轉(zhuǎn)發(fā)到與service對(duì)應(yīng)的一組后端pod。
  • 服務(wù)發(fā)現(xiàn):使用 etcd 的 watch 機(jī)制,監(jiān)控集群中service和endpoint對(duì)象數(shù)據(jù)的動(dòng)態(tài)變化,并且維護(hù)一個(gè)service到endpoint的映射關(guān)系。(本質(zhì)是:路由關(guān)系)
  • 實(shí)現(xiàn)方式:存在兩種實(shí)現(xiàn)方式,userspace 和 iptables。
  • userspace:在用戶空間,通過kuber-proxy實(shí)現(xiàn)負(fù)載均衡的代理服務(wù),是最初的實(shí)現(xiàn)方案,較穩(wěn)定、效率不高;
  • iptables:在內(nèi)核空間,是純采用iptables來實(shí)現(xiàn)LB,是Kubernetes目前默認(rèn)的方式;
  • runtime:一般使用 docker 容器,也支持其他的容器。

集群的高可用

Kubernetes 集群,在生產(chǎn)環(huán)境,必須實(shí)現(xiàn)高可用:

  1. 實(shí)現(xiàn)Master節(jié)點(diǎn)及其核心組件的高可用;
  2. 如果Master節(jié)點(diǎn)出現(xiàn)問題的話,那整個(gè)集群就失去了控制;

具體的 HA 示意圖:

 

K8s集群架構(gòu)與高可用解析

 

上述方式可以用作 HA,但仍未成熟,據(jù)了解,未來會(huì)更新升級(jí) HA 的功能.

具體工作原理:

  • etcd 集群:部署了3個(gè)Master節(jié)點(diǎn),每個(gè)Master節(jié)點(diǎn)的etcd組成集群
  • 入口集群:3個(gè)Master節(jié)點(diǎn)上的APIServer的前面放一個(gè)負(fù)載均衡器,工作節(jié)點(diǎn)和客戶端通過這個(gè)負(fù)載均衡和APIServer進(jìn)行通信
  • pod-master保證僅是主master可用,scheduler、controller-manager 在集群中多個(gè)實(shí)例只有一個(gè)工作,其他為備用

 

責(zé)任編輯:武曉燕 來源: ningg
相關(guān)推薦

2024-05-27 00:00:10

KubernetesK8s云原生

2019-10-31 09:03:12

Java集群微服務(wù)

2024-05-21 13:03:45

2023-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2024-12-30 08:58:04

2021-01-11 16:10:28

K8Sapollo代碼

2021-04-22 09:46:35

K8SCluster Aut集群

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2018-01-12 14:20:37

數(shù)據(jù)庫MySQL高可用架構(gòu)

2019-08-27 15:56:44

MySQL 互聯(lián)網(wǎng)數(shù)據(jù)庫

2022-12-28 10:52:34

Etcd備份

2021-11-04 07:49:58

K8SStatefulSetMySQL

2023-09-07 08:58:36

K8s多集群

2019-11-14 09:55:39

K8S架構(gòu)微服務(wù)

2023-11-06 07:16:22

WasmK8s模塊

2022-06-14 07:56:15

Kubernetes存儲(chǔ)架構(gòu)K8S

2022-10-10 12:54:00

Flink運(yùn)維

2024-07-22 13:43:31

Kubernetes容器

2024-05-20 15:39:00

Karmada混合云多云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)