Kubernetes介紹
Kubernetes是一個開源的Docker容器編排系統
1.2015年7月,Kubernetes v1.0正式發佈,截止到目前最穩定版本是v1.9
2.調度計算集羣的節點,動態管理上面的作業
3.通過使用 [labels] 和 [pods] 的概念,將應用按邏輯單元進行分組
Kubernetes的作用
1.自動化部署,擴展和管理容器應用
2.資源調度
3.部署管理
4.服務發現
5.擴容縮容
6.監控
Dev(運維) ops(開發) 思想
核心:
持續性的集成CI(測試可做):
開發 → 上傳到Git(代碼管理器,協同平臺,自動存儲提交上對的代碼項目,減少了溝通複雜程度)→ 測試(自動發現Git上的更改,進行自動測試,全自動,無需人員干預)
持續性的交付CD:
系統環境不同,需要做兼容,在線更新(藍綠部署,灰度部署,金絲雀)
藍綠部署【典型代表:海豚,大腦的運行機制,代理端對外只提供一個IP,羣集1更新業務斷開,此時羣集2支撐業務】
滾動部署【線網最多,更適合於容器,裏面爲多個容器應用,版本內容都統一,按行升級,減輕操作複雜度,但是對於客戶而言,有可能會出現訪問版本不同的情況】
持續性的部署CD:
傳統項目的瀑布流行的開發:
需求分析 → 設計(實體與關係模型ER圖) → 開發 → 測試 → 發佈
分層開發:
表示層:展示數據(數據可視化)
業務邏輯層:註冊的信息進行加密存儲
持久層:數據的存儲(MySQL)
微服務容器開發docker:
優點:靈活,方便遷移,佔用內存小,無需考慮底層環境
缺點:共享內核資源,不安全
特點:容器多通信複雜
web:nginx,tomcat
中間件:rabbiting,kafka,redis,memcache
數據庫:mysql,oracle,mongodb
測試:
單元測試:項目開發完直接測試
項目測試:需要有構建的過程(make)
羣集管理工具:
1.compose【單個節點進行編排】+machine【完成節點的初始化並進行授權,能夠成功的添加到羣集管理中】+swarm【羣集管理】(docker官方提供的)
2.mesos+馬拉松【地下的資源整合成】
3.Kubernetes【k8s:佔比85%,紅帽的openshift成爲自己的雲】
Kubernetes基本概念和術語
1.Kubernetes中的大部分概念都可以看作一種資源池
2.Kubernetes術語:
Master
Node
Pod
Lable
Deployment
Service
Job計劃任務
DaemonSet
Kubernetes容器雲平臺入門與進階
pod中放docker容器,nginx提供網站,旁邊有logstach日誌蒐集,
pod中可以包含多個容器,外部爲Node
概述:
Kubernetes是什麼
Kubernetes特性
Kubernetes集羣架構與組件
Kubernetes核心概念
Kubernetes是什麼:
1.Kubernetes是Google在2014年開源的一個容器集羣管理工具系統,Kubernetes簡稱K8S
2.K8S用於容器化應用程序的部署,擴展和管理
3.K8S提供了容器編排,資源調度,彈性伸縮,部署管理,服務發現等一系列功能
4.Kubernetes目標是讓部署容器化應用簡單高效
官方網站:http://www.kubernetes.io
Kubernetes特性:
自我修復:
在節點故障時重新啓動失敗的容器,替換和重新部署,保證預期的副本數量,殺死健康檢查失敗的容器,並且在未準備好之前不會處理客戶端請求,確保線上服務不中斷
彈性伸縮:
使用命令,UI或者基於CPU使用情況自動快速擴容和縮容應用程序實例,保證應用業務高峯併發時的高可用性,業務低峯時回收資源,以最小成本運行服務
自動部署和回滾:
K8S採用滾動更新策略更新應用,一次更新一個Pod,而不是同時刪除所有Pod,如果更新過程中出現問題,將回滾更改,確保升級不影響業務
服務發現和負載均衡:
K8S爲多個容器提供一個同一訪問入口(內部IP地址和一個DNS名稱),並且負載均衡關聯的所有容器,使得用戶無需考慮容器的IP問題
機密和配置管理:
管理機密數據和應用程序配置,而不需要把敏感數據暴露在鏡像裏,提高敏感數據安全性,並將一些常用的配置存儲在K8S中,方便應用程序使用
存儲編排:
掛載外部存儲系統,無論時來自本地存儲,無論是來自本地存儲,公有云(如AWS),還是網絡存儲(如NFS,GlusterFS,Ceph)都作爲羣集資源的一部分應用,極大提高存儲使用靈活性
批處理:
提供一次性任務,定時任務,滿足批量數據處理和分析的場景
集羣架構與組件
三個節點服務器
中心化機制:mysql主從複製,一個master兩個slave
真正幹活的是node/slave,master只做調度和健康狀態檢查
去中心化機制:GFS,redis
master什麼活都要做
典型的中心化機制:三臺節點服務器
生產環境中至少三個master(三副本機制)
node理論上是無限多,但是需要歸類
master:
Server API:對外提供訪問入口
集羣的統一入口,各組件協調者,以RESTful API提供接口服務,所有對象資源的增刪改查和監聽操作都交給API Server處理後在提交給Etcd存儲
kubectl:命令行工具,管理員使用
Internet:客戶來訪者使用
Auth:驗證機制
Etcd:身份信息驗證,存儲(驗證數據庫)
分佈式鍵值存儲系統,用於保存羣集狀態數據,比如Pod,Service等對象信息
scheduler:調度節點(業務調配)
根據調度算法爲新創建的Pod選擇一個Node節點,可以任意部署,也可以部署在同一個節點上,也可以部署在不同節點上
controller-manager:控制器管理器,管理節點(分佈在每個節點中)
處理集羣中常規後臺任務,一個資源對應一個控制器,而Controller-Manager就是負責管理這些控制器的
Node:
流量分析工,清洗工具(監控)
kube-proxy:代理器,分配到多個pod中
kubelet:管理工具
pod:運行在容器上,最小管理單元
container:容器
pod:
最小部署單元
一組容器的集合
一個Pod中的容器共享網絡命名空間
Pod是短暫的
Controllers:
ReplicaSet:確保預期的Pod副本數量
Deployment:無狀態應用部署
StatefulSet:有狀態應用部署
DaemonSet:確保所有Node運行同一個Pod
Job:一次性任務
Cronjob:定時任務
更改及層次對象,部署和管理Pod
Service:
防止Pod失聯
定義一組Pod的訪問策略
Label:
標籤,附加到某個資源上,用於關聯對象,查詢和詩選
Namespaces:
命名空間,將對象邏輯上隔離
Annotations:
註釋