內容提要
Docker Swarm作為Docker集群原生的容器編排解決方案,是Docker生態系統中的關鍵組件之一。《Swarm容器編排與Docker原生集群》涵蓋了Swarm中的發現、調度、高可用、安全和平台伸縮性等重要主題,能幫助你了解Swarm如何組建包含4700個節點的集群,並掌握Swarm的使用與管理,以及如何使用實現大規模套用的可伸縮。
《Swarm容器編排與Docker原生集群》適合企業架構、開發、運維等各崗位從業者閱讀,同樣適合廣大想了解當前主流CaaS架構內在運行原理與真實場景實踐的普通學習者。
目錄
第1章 歡迎來到Docker Swarm 1
集群工具和容器管理器 3
Swarm的目標 3
為什麼使用Swarm 4
真實的示例 5
-- 寵物模型vs牛群模型 5
Swarm特性 6
類似項目 7
-- Kubernetes 7
-- CoreOS Fleet 8
-- Apache Mesos 9
-- Kubernetes vs Fleet vs Mesos 10
-- Swarm vs所有 10
Swarm v1架構 10
-- 術語 12
開始使用Swarm 13
-- Mac系統上的Docker 14
-- Windows系統上的Docker 16
-- 使用Linux 18
-- 檢查Docker Machine是否可用——所有系統 19
以前的Swarm 19
-- Boot2Docker 21
-- 使用Docker Machine創建4個集群節點 21
-- 配置Docker主機 24
-- 啟動Docker Swarm 25
-- 測試Swarm集群 29
-- 如今的Swarm 31
本章小結 35
第2章 探索發現服務 36
發現服務 37
Token 38
-- 使用token重新架構第1章示例 38
-- Token的限制 43
Raft 43
-- Raft理論 43
-- 實際的Raft 45
Etcd 47
-- 使用Etcd重新架構第1章示例 47
ZooKeeper 50
Consul 50
-- 使用Consul重新架構第1章示例 50
實現去中心化的發現服務 52
本章小結 52
第3章 遇見Docker Swarm Mode 53
SwarmKit 53
-- 版本和支持 54
-- SwarmKit架構 54
-- SwarmKit的核心:swarmd 56
-- SwarmKit的控制器:swarmctl 57
-- 使用Ansible預配SwarmKit集群 58
-- 在SwarmKit上創建服務 62
Swarm Mode 63
-- Swarm v1 vs Swarm Mode vs SwarmKit 64
-- 深入了解Swarm Mode部署 65
本章小結 72
第4章 創建生產級別Swarm 73
工具 73
Swarm2k的HA拓撲 74
-- 管理器配置 75
-- Raft恢復場景 75
-- Raft檔案 76
-- 運行任務 76
-- 管理器拓撲 76
使用belt預配基礎架構 79
使用Docker Machine保護管理器安全 81
理解Swarm內部機制 83
-- 加入worker 84
-- 升級管理器 85
監控Swarm2k 87
-- InfluxDB時間序列資料庫 87
Swarm3k 90
-- Swarm3k的搭建和工作負載 90
-- 大規模Swarm的性能 92
總結Swarm2k和Swarm3k的經驗教訓 95
本章小結 96
第5章 管理Swarm集群 97
Docker Swarm standalone 97
Docker Swarm Mode 98
-- 手動添加節點 99
-- 管理器 99
-- Worker數量 100
-- 添加腳本化節點 100
-- belt 102
-- 使用Ansible 103
集群管理 105
-- 操作節點 106
降級和升級 107
-- 標記節點 108
-- 移除節點 110
Swarm健康 111
備份集群配置 111
災難恢復 112
Swarm的圖形化界面 112
-- Shipyard 112
-- Portainer 114
本章小結 115
第6章 Swarm上真實套用的部署 116
微服務 116
部署一個複製的Nginx 117
-- 一個極簡的Swarm 118
-- Docker Service 120
overlay網路 124
集成的負載均衡 124
服務的連線:用WordPress例子展示 124
-- Swarm的調度策略 127
-- 現在,WordPress 127
Docker Compose和Swarm Mode 130
Docker stacks介紹 130
-- 分散式套用包 131
-- Docker deploy 132
另外一個套用:Apache Spark 133
-- 為什麼要在Docker上運行Spark 134
-- 沒有Swarm的Spark單機 134
-- 在Swarm上的Spark單機 137
-- 在Swarm上啟動Spark 138
本章小結 140
第7章 平台的向上伸縮 141
再次登場的Spark例子 142
Docker外掛程式 142
實驗室環境 143
-- 一個獨一無二的秘鑰 143
-- Docker Machine 144
-- 安全組 145
-- 網路配置 146
-- 存儲配置和架構 146
安裝Flocker 148
-- 生成Flocker證書 149
-- 安裝軟體 151
-- 安裝控制節點 153
-- 安裝集群節點 153
-- 測試一切是否正常 154
安裝並配置Swarm 156
-- 為Spark添加一個卷 157
再次部署Spark 157
-- 測試Spark 159
-- 使用Flocker存儲 161
伸縮Spark 164
監控Swarm託管的套用 165
-- Prometheus 165
-- 安裝一個監控系統 166
-- 在Grafana中導入Prometheus 167
本章小結 169
第8章 Swarm附加特性的探索 171
Libnetwork 171
-- Networking外掛程式 172
-- 容器網路模型 173
加密和路由矩陣 174
MacVLAN 174
-- overlay網路 175
網路控制臺 177
Libkv 179
-- 如何使用libkv 180
本章小結 181
第9章 Swarm集群和Docker軟體供應鏈的安全加固 182
軟體供應鏈 182
Swarm集群的安全加固 183
安全加固Swarm:最佳實踐 184
-- 證書頒發機構 185
-- 證書和相互TLS 185
-- 集群加入令牌 185
-- 在Docker Machine中添加TLS 186
Docker Notary 187
Docker Secret介紹 190
本章小結 192
第10章 Swarm和雲 193
Docker for AWS和Docker for Azure 193
-- Docker for AWS 194
-- Docker for Azure 198
Docker Datacenter 201
OpenStack上的Swarm 202
-- OpenStack Nova 204
-- 當下現實:OpenStack友好的方式 205
-- OpenStack Heat 205
-- OpenStack Magnum 206
本章小結 215
第11章 Swarm的未來展望 216
Provisioning的挑戰 216
軟體定義基礎設施 216
-- Infrakit 217
-- TUF—— The Update Framework 219
Docker Stacks和Compose 220
Caas ——容器即服務 220
Unikernel 220
為Docker做貢獻 222
-- Github 222
-- 提交issue 222
-- 代碼 223
-- belt和其他項目 223
本章小結 223