Kubernetes-Docker集羣管理

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:

註釋

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章