天天看點

Kubernetes架構各元件介紹kubernetes 概述

1、kubernetes 是什麼

Google2014年推出的容器叢集管理系統

k8s用于容器化應用程式的部署、擴充和管理

k8s提供了容器編排、資源排程、彈性伸縮、部署管理、服務發現等一系列功能

k8s的目标是讓部署容器化應用簡單高效

總結:可以了解成一個容器平台、微服務平台(非常适合微服務架構)、便攜式雲平台

2、kubernetes 特性

2.1 自我修複:

在節點故障時重新啟動失敗的容器,替換和重新部署,保證預期我們設定的副本的數量;

殺死健康檢查失敗的容器,并且在沒有準備好之前是不會處理用戶端請求的(不對外提供服務),保證線上服務不中斷

2.2 彈性伸縮(比如618活動,保證我們服務的快速縮容和擴容):

使用指令、UI或者基于CPU使用情況自動快速擴容和縮容應用的程式執行個體(容器的副本數),

保證應用業務高峰并發時的高可用性;

在業務低峰時期回收資源,以減小成本運作服務

2.3 自動部署和復原

k8s 采用滾動更新的政策更新應用,一次更新一個Pod,而不是同時删除所有的pod,如果更新過程中出現問題,将復原更改,確定更新不影響業務

2.4 服務發現和負載均衡

k8s為多個容器提供一個統一通路入口(内部IP位址和一個DNS名稱),并且負載均衡關聯的所有容器,使得使用者無需考慮容器IP的問題

2.5 機密資料(密碼,證書)和配置管理

k8s提供存儲能力(可以把密碼加密放在容器存儲中)

管理機密資料和應用程式的配置,而不需要把敏感的資料暴露在鏡像裡,提高敏感資料的安全性,并且可以把一些常用的配置存儲在k8s中,友善應用程式的使用

2.6 存儲編排

挂載外部的存儲系統,無論是來自本地存儲,公有雲,還是網絡存儲(NFS《GlustFS,Ceph)

都作為叢集資源的一部分使用,極大的提高存儲使用靈活性

2.7 批處理

提供一次性任務,定時任務,滿足批量資料處理和分析的場景

3、Kubernetes 叢集架構與元件(http://docs.kubernetes.org.cn/251.html)

Kubernetes架構各元件介紹kubernetes 概述

總結:

Master 元件:

kube-apiserver :

Kubernetes API 叢集的統一入口,各元件的協調者,以RESTful API提供接口方式,所有的對象資源的

增删改查和監聽操作都交給APIServer處理後再送出給etcd資料庫做持久化存儲

Kube-controller-manager

處理叢集中正常背景任務,一個資源對應一個控制器,而controllerManager就是負責處理這些控制器的

kube-scheduler

  根據排程算法為新建立的pod選擇一個Node節點,可以任意部署,可以部署在同一個節點上,也可以部署在不同的節點上

etcd

分布式鍵值存儲系統,用于儲存叢集狀态資料,比如Pod,Service等對象資訊

Node元件:

kubelet:

  kubelet 是Master在Node節點上的Agent,管理本機運作容器的生命周期,比如建立容器,Pod挂載資料卷,下載下傳secret,擷取容器和節點狀态等工作,kubelet 将每個Pod轉換成一組容器

kube-proxy:

在Node節點上實作Pod網絡代理,維護網絡規則和四層負載均衡工作。實作讓Pod節點(一個或者多個容器)對外提供服務

docker或rocket

容器引擎,運作容器

4、Kubernetes 核心概念

模型對象

Pod

• 最小部署單元

• 一組容器的集合

• 一個Pod中的容器共享網絡命名空間

• Pod是短暫的

Controllers

• ReplicaSet : 確定預期的Pod副本數量

• Deployment : 無狀态應用部署

• StatefulSet : 有狀态應用部署

• DaemonSet : 確定所有Node運作同一個Pod

• Job : 一次性任務

• Cronjob : 定時任務

更進階層次對象,部署和管理Pod

Service

• 防止Pod失聯

• 定義一組Pod的通路政策

Label : 标簽,附加到某個資源上,用于關聯對象、查詢和篩選

Namespaces : 命名空間,将對象邏輯上隔離

Annotations :注釋

繼續閱讀