•虛擬機技術和容器技術
- 虛擬化技術發展的三個時代

- 容器技術
容器技術:有效的將單個操作系統的資源划分到孤立的組中,以便更好的在孤立的組之間平衡有沖突的資源使用需求,這種技術就是容器技術。
•LXC,就是Linux容器虛擬技術(Linux container)。
•Linux Container是一種內核輕量級的操作系統層虛擬化技術。
•Linux 容器技術能夠讓您對應用及其整個運行時環境(包括全部所需文件)一起進行打包或隔離。從而讓您可以在不同環境(如開發、測試和生產等環境)之間輕松遷移應用,同時還可保留應用的全部功能。
- 容器解決什么問題?
- 保證開發、測試與生產環境的一致性
- 快速搭建各類基礎服務,例如Gitlab,Nexus、Jenkins等,極大降低學習成本!
- 搭建一次性測試執行環境,例如我們運行自動化測試的環境,隨用隨建,不用即扔
- …
- 容器的優點
1. 敏捷環境
2. 提高生產力
3. 版本控制
4. 計算環境可移植性
5. 標准化
6. 安全
- 虛擬機技術與容器技術對比


- 容器技術的代表-Docker
Docker兩句口號:
•Build, Ship and Run
搭建、發送、運行
•Build once,Run anywhere
搭建一次,到處能用
Docker技術的三大核心概念:
·Image
鏡像
·Container
容器
·Repository
倉庫
IT 軟件中所說的 “Docker” ,是指容器化技術,用於支持創建和使用LXC。Docker本身並不是容器,它是創建容器的工具,是應用容器引擎。
•容器編排工具
- 什么是容器編排?
容器編排是指自動化容器的部署、管理、擴展和聯網。容器編排可以為需要部署和管理成百上千個 Linxu容器和主機的企業提供便利。
- 容器編排具有哪些用途?
•集群管理
•部署
•可伸縮性
•健康
•服務可用性
•隔離
- 容器編排工具
通過抽象主機基礎結構,允許用戶將整個集群視為單個部署目標。
一些常見的方案包括:Kubernetes、Docker Swarm 和 Apache Mesos。
Docker Swarm

Apache Mesos

•Kubernetes介紹
- Kubernetes是什么?K8s?
•Kubernetes是Google 2014年創建管理的,是Google 10多年大規模容器管理技術Borg的開源版本。
•Kubernetes是容器集群管理系統,是一個開源的平台,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
通過Kubernetes你可以:
•快速部署應用
•快速擴展應用
•無縫對接新的應用功能
•節省資源,優化硬件資源的使用
Kubernetes 特點:
•可移植: 支持公有雲,私有雲,混合雲,多重雲(multi-cloud)
•可擴展: 模塊化, 插件化, 可掛載, 可組合
•自動化: 自動部署,自動重啟,自動復制,自動伸縮/擴展
- Kubernetes集群
Master:
•API Server
•Scheduler
•Controller manager
•Etcd
Node:
•Kubelet
•Kube-proxy
•Docker

- Pod

Pod是Kubernetes創建或部署的最小/最簡單的基本單位,一個Pod代表集群上正在運行的一個進程。
Pod(上圖綠色方框)安排在節點上,包含一組容器和卷。同一個Pod里的容器共享同一個網絡命名空間,可以使用localhost互相通信。Pod是短暫的,不是持續性實體。
- Lable

Labels其實就一對附加到Pod上的 key/value對 ,被關聯到對象上,標簽的使用我們傾向於能夠標示對象的特殊特點,並且對用戶而言是有意義的(比如app=mysql),但是標簽對內核系統是沒有直接意義的。
- ReplicaSet( Replication Controller升級版 )
ReplicaSet 確保任意時間都有指定數量的Pod“副本”在運行。如果為某個Pod創建了ReplicaSet並且指定3個副本,它會創建3個Pod,並且持續監控它們。如果某個Pod不響應,那么ReplicaSet會替換它。
健康檢測:
1.LivenessProbe(存活探針)
2.ReadinessProbe(就緒探針)

- Service
Service是定義一系列Pod以及訪問這些Pod的策略的一層抽象。Service通過Label找到Pod組。


注:在 1.8 以上的版本中,kube-proxy 組件增加了 ipvs 模式
- 關於CI/CD流水線架構圖:
