Kubernetes架構各組件介紹

kubernetes 概述

一、kubernetes 是什麼
Google2014年推出的容器集羣管理系統html

k8s用於容器化應用程序的部署、擴展和管理算法

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

k8s的目標是讓部署容器化應用簡單高效數據庫

總結:能夠理解成一個容器平臺、微服務平臺(很是適合微服務架構)、便攜式雲平臺api

二、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 批處理
提供一次性任務,定時任務,知足批量數據處理和分析的場景

三、Kubernetes 集羣架構與組件(http://docs.kubernetes.org.cn/251.html)
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
容器引擎,運行容器

四、Kubernetes 核心概念
模型對象

Pod
• 最小部署單元

• 一組容器的集合

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

• Pod是短暫的

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

• Deployment : 無狀態應用部署

• StatefulSet : 有狀態應用部署

• DaemonSet : 確保全部Node運行同一個Pod

• Job : 一次性任務

• Cronjob : 定時任務

更高級層次對象,部署和管理Pod

Service
• 防止Pod失聯

• 定義一組Pod的訪問策略

Label : 標籤,附加到某個資源上,用於關聯對象、查詢和篩選

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

Annotations :註釋

相關文章
相關標籤/搜索