一、kubernetes系統基礎190622
一、容器編排工具
- docker編排工具三劍客:docker compose, docker swarm, docker machine
- IDC的操做系統:mesos
- 提供容器編排框架:marathon
- kubernetes
二、DevOps
- CI:持續集成
- CD:持續交付,Delivery
- CD:持續部署,Deployment
三、k8s概述
- Kubernetes是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單而且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
四、k8s特性
- 自動裝箱
- 自我修復,容器崩潰後直接從新拉起一個
- 自動實現水平擴展
- 自動實現服務發現和負載均衡
- 自動發佈和自動回滾
- 祕鑰和配置管理
- 存儲編排
- 批量處理執行
五、k8s架構
- master:由一組節點來作管理節點,是整個集羣的大腦,一般應該有3個
- API-Server:來接受請求
- Scheduler:調度器
- Controller-Manager:控制器管理器
- node01...N :由N個節點來作運行docker的節點
- Kubelet:管理node
- Docker:容器引擎
- Kube-proxy:建立/修改/刪除service規則
六、Pod豌豆莢
- k8s中最小單位是pod
- 在pod中運行容器
- 在同一pod中的容器共享網絡和存儲
七、Label標籤
- Label:標記POD對象,是POD的元數據,kv類型
- Label Selector:標籤選擇器,挑選指定類的POD
八、Pod的分類
- 自主式Pod
- 控制器管理的Pod
- ReplicationContrller:副本控制器,可實現滾動更新
- ReplicaSet:副本集控制器
- Deployment:只能管理無狀態的應用,支持2級Pod控制器(HPA),根據業務負載擴展Pod
- StatefulSet:有狀態副本集
- DaemonSet:守護副本集
- Job
- Ctonjob
九、Service對象
- 提供固定的訪問地址,能夠實現調度功能
- 爲Pod提供轉發
- 靠標籤選擇器來選擇Pod爲本身的後端
- 是一個iptables或者lvs的一條規則
- service的名能夠被DNS-Pod解析
十、DNS-Pod
- AddOns:是k8s集羣的一個附件
- 可實現自動添加/刪除解析記錄
十一、k8s網絡
- 物理機網絡:節點網絡
- service網絡:集羣網絡
- 容器網絡:pod網絡
- 同一個Pod內的容器使用lo網卡通訊
- 各Pod之間經過Overlay Network網絡(疊加網絡)通訊
- Pod與Service之間經過iptables規則通訊
十二、etcd
- 存儲全部的集羣狀態信息
- 通常有3個節點作冗餘
- 提供resful風格的api
- 鍵值存儲
- 內部須要ca,簽署證書,以供https通訊
1三、flannel
- CNI:容器網絡接口協議
- flannel屬於CNI插件
- 管理集羣的Pod網絡和集羣網絡的網絡配置
- 使用疊加網絡實現
- 與flannel相同功能的插件還有:
- calico,支持網絡配置和網絡策略,使用IPIP隧道實現
- canel:flannel和calico結合生成的項目
歡迎關注本站公眾號,獲取更多信息