【缺書】NT售價: 445 元
隨著Docker 2015年的病毒式傳播和2016年的迅速普及應用,云計算時代的運維方式發生了很大變化。從表面上看,20年前依靠運維工程師通過SSH遠程連接服務器進行維護的“刀耕火種”時代早已不復存在了;但在過去的十幾年里,傳統集群運維工具欣欣向榮的背后依舊是20年前的那套遠程管理方案的自動化實現,其本質不過是把重復的勞動交給計算機自動執行了。不管是連接效率還是集群管理都不可避免地會遇到很多問題,特別是在云計算時代,數以千計的服務器集群在大中企業如同家常便飯,傳統的運維手段早已黔驢技窮。而OpenStack的出現也只是給了IaaS服務商一個喘息的機會,普通企業的運維分布式集群依舊乏力。直到虛擬化技術有了長足發展,Namespace最后一塊拼圖——User Namespace成功實現并加入Linux Kernel 3.8,容器虛擬化技術的翹楚——LXC終于有了與虛擬機、KVM等技術一戰高下的底氣。2014年,Docker一經開源便引起了業界的轟動,這個最初基于LXC開發的容器引擎讓全世界的開發者和運維者看到了新的方向,在毫秒級的應用部署優勢面前,諸多企業紛紛“倒戈”容器陣營。隨著Google、亞馬遜、微軟、IBM等云計算巨頭紛紛表態并加入OCI(Oracle調用接口),這股容器云的浪潮在2015年迅速顛覆了傳統的運維方案,替代它們的是一套更智能、更全面、更靈活的自動化運維體系。在倡導“萬物皆容器”的理念下,得益于容器的輕便特性,一些邊緣概念也被逐漸提上了日程:微服務、Serverless、DevOps,如今的運維已不再是簡單的服務器維護,更肩負了數據、服務與人的溝通。在如今高效的集群管理方案面前,有人不禁驚呼容器時代不再需要運維工程師了,但是待我們推開容器云世界的大門時,我們發現逝去的不過是舊的運維世界,在新的容器云世界里,我們依舊知之甚少,運維工程師還不可或缺。本書圍繞當前容器云運維的主流框架:Docker、Kubernetes詳細介紹了容器云運維的實戰技巧,在內容上分為三大部分:第一部分(第1~2章)介紹了在Linux系統中傳統服務器運維的基礎知識以及集群管理工具;第二部分(第3~7章)講解了以Docker為主的容器引擎的基本知識與原理,并介紹了容器技術在DevOps中的實際應用場景;第三部分(第8~9章)詳細講解了基于Kubernetes的容器云集群運維技巧。全書幾乎囊括了容器云主流的運維開發生態,詳細講解了基于容器云的集群運維解決方案。全書內容不僅介紹了Docker與Kubernetes的基本的主流功能,還對其過渡性的實驗功能和即將遺棄的功能做了一定的提醒,對新手而言可以減少“踩坑”的概率。因此,本書一方面可以作為面向容器云入門甚至是Linux入門的初級教程;另一方面,隨著內容的深入與擴展,本書也適合那些對Docker有一定了解,但是對容器云的運維方式不甚了解的讀者。本書還介紹了不同場合下對規模較大的容器的管理方案,對初創企業或者小團隊的運維人員而言,也是一本不錯的進階書籍。書中少量圖片來自網絡,相關代碼若需要參考均在文中留有出處。由于筆者水平有限,書中存在錯誤或疏漏的地方在所難免,如有任何意見或建議,歡迎發郵件,感謝您的指正。
本書圍繞當前容器云運維的主流框架:Docker、Kubernetes詳細介紹了容器云運維的實戰技巧,在內容上分為三大部分:第一部分(第1~2章)介紹了在Linux系統中傳統服務器運維的基礎知識以及集群管理工具;第二部分(第3~7章)講解了以Docker為主的容器引擎的基本知識與原理,并介紹了容器技術在DevOps中的實際應用場景;第三部分(第8~9章)詳細講解了基于Kubernetes的容器云集群運維技巧。全書幾乎囊括了容器云主流的運維開發生態,詳細講解了基于容器云的集群運維解決方案。本書適合容器云初學者,也適合那些對Docker有一定了解,但對容器云的運維方式不甚了解的讀者。
第1章 Linux 運維基礎 11.1 Linux基礎 21.1.1 systemd 21.1.2 Shell腳本 61.2 自動化運維 141.2.1 自動化運維之Ansible 141.2.2 Ansible的使用 161.2.3 Ansible模塊 231.2.4 playbook 271.3 本章小結 38第2章 高可用的Linux集群 392.1 高可用集群基礎 402.1.1 高可用衡量標準 402.1.2 高可用層次結構 402.1.3 常見的高可用方案 412.2 虛擬服務的實現 442.2.1 DNS輪詢 442.2.2 客戶端調度 452.2.3 應用層負載調度 462.2.4 IP層負載調度 462.3 LVS負載均衡 462.3.1 LVS體系結構 472.3.2 IP負載均衡 482.3.3 負載調度算法 542.3.4 ipvsadm工具詳解 562.3.5 LVS集群實踐 582.4 Nginx負載均衡 632.4.1 Nginx配置文件詳解 632.4.2 Nginx負載均衡模塊 682.5 本章小結 75第3章 Docker容器引擎 763.1 容器技術 773.1.1 虛擬化技術 773.1.2 容器技術與Docker 793.1.3 容器技術原理 843.2 Docker基礎 893.2.1 Docker架構 893.2.2 Docker安裝 913.2.3 Docker命令 963.3 Docker鏡像 973.3.1 認識鏡像 973.3.2 鏡像操作 993.3.3 Dockerfile詳解 1033.3.4 鏡像倉庫 1183.4 Docker容器 1213.4.1 認識容器 1213.4.2 容器操作 1233.4.3 數據卷 1343.5 插件與存儲驅動 1383.5.1 Docker插件 1383.5.2 存儲驅動 1393.6 容器與操作系統 1403.6.1 為容器而打造:Container Linux(CoreOS) 1403.6.2 定制化容器系統:RancherOS 1423.7 本章小結 143第4章 容器網絡 1444.1 Docker網絡基礎 1454.1.1 端口映射 1454.1.2 端口暴露 1464.1.3 容器互聯 1474.2 Docker網絡模式 1524.2.1 none模式 1524.2.2 container模式 1544.2.3 host模式 1554.2.4 bridge模式 1564.2.5 overlay模式 1574.3 Docker網絡配置 1584.3.1 Daemon網絡參數 1584.3.2 配置DNS 1594.4 本章小結 159第5章 容器編排 1605.1 安裝Docker Compose 1615.1.1 二進制安裝 1615.1.2 使用Python pip安裝 1615.2 Compose命令基礎 1625.2.1 指定配置文件 1625.2.2 指定項目名稱 1635.2.3 Compose環境變量 1635.2.4 build:構建服務鏡像 1645.2.5 bundle:生成DAB包 1655.2.6 config:檢查配置語法 1655.2.7 create:創建服務容器 1665.2.8 down:清理項目 1675.2.9 events:查看事件 1685.2.10 exec:進入服務容器 1685.2.11 kill:殺死服務容器 1695.2.12 logs:查看服務容器日志 1695.2.13 pause:暫停服務容器 1705.2.14 port:查看服務容器端口狀態 1705.2.15 ps/images:查看容器與鏡像 1715.2.16 pull:拉取項目鏡像 1725.2.17 push:推送項目鏡像 1725.2.18 restart:重啟服務容器 1735.2.19 rm:刪除項目容器 1735.2.20 run:執行一次性命令 1745.2.21 scale:設置服務容器數量 1775.2.22 start:啟動服務容器 1785.2.23 stop:停止服務容器 1785.2.24 top:查看進程狀態 1785.2.25 unpause:取消暫停 1795.2.26 up:啟動項目 1795.3 Compose配置文件 1835.3.1 配置文件基礎 1835.3.2 基本配置 1845.3.3 網絡配置 1995.3.4 配置擴展 2005.4 Compose實戰 2045.4.1 WordPress博客部署 2045.4.2 Django框架部署 2055.5 本章小結 207第6章 Docker集群管理 2086.1 Swarm 基礎 2096.1.1 Docker Swarm 命令 2096.1.2 Docker Node 命令 2116.1.3 Docker Stack 命令 2136.1.4 Docker集群網絡 2146.2 集群進階 2236.2.1 Swarm:高可用的Docker集群管理工具 2236.2.2 Shipyard:集群管理面板 2256.2.3 Portainer:容器管理面板 2276.3 本章小結 229第7章 Docker生態 2307.1 宿主管理工具:Machine 2317.1.1 Machine的安裝 2317.1.2 宿主環境管理 2317.2 容器編排調度 2337.2.1 Rancher:集群管理面板 2337.2.2 Nomad:行業領先的調度系統 2357.2.3 DC/OS:一切皆可調度 2377.2.4 服務發現 2387.3 私有鏡像倉庫 2397.3.1 私有倉庫的部署 2397.3.2 VMware Harbor:企業私有倉庫 2507.3.3 SUSE Portus:鏡像倉庫前端分布認證 2547.4 Docker插件 2567.4.1 授權插件 2567.4.2 Flocker存儲插件 2577.4.3 網絡驅動插件 2577.5 Docker安全 2597.5.1 Docker安全機制 2597.5.2 Docker資源控制 2617.5.3 Docker安全工具 2647.6 監控與日志 2657.6.1 cAdvisor:原生集群監控 2657.6.2 Logspout:日志處理 2667.6.3 Grafana:數據可視化 2677.6.4 其他監控工具 2697.7 基于Docker的PaaS平臺 2707.7.1 Deis:輕量級PaaS平臺 2707.7.2 Tsuru:可擴展PaaS平臺 2707.7.3 Flynn:模塊化PaaS平臺 2717.8 Docker持續集成 2717.8.1 Drone:輕量級CI工具 2717.8.2 Travis CI:著名的CI/CD服務商 2737.9 其他 2747.10 本章小結 276第8章 Kubernetes入門 2778.1 Kubernetes介紹 2788.1.1 什么是Kubernetes 2788.1.2 Kubernetes架構 2788.1.3 Kubernetes的優勢 2808.2 Kubernetes概念 2818.2.1 Kubernetes資源 2818.2.2 調度中心:Master 2818.2.3 工作節點:Node 2818.2.4 最小調度單位:Pod 2838.2.5 資源標簽:Label 2848.2.6 彈性伸縮:RC與RS 2868.2.7 部署對象:Deployment 2878.2.8 水平擴展:HPA 2888.2.9 服務對象:Service 2908.2.10 數據卷資源:Volume 2938.2.11 數據持久化:Persistent Volume 2998.2.12 命名空間:Namespace 3048.2.13 注釋:Annotation 3048.3 Kubernetes部署 3058.3.1 使用Minikube安裝Kubernetes 3058.3.2 使用Kubeadm安裝Kubernetes 3078.4 Kubernetes命令行詳解 3098.4.1 基本命令(初級) 3108.4.2 基本命令(中級) 3188.4.3 部署命令 3208.4.4 集群管理命令 3238.4.5 故障排除與調試命令 3268.4.6 高級命令 3298.4.7 設置命令 3308.4.8 其他命令 3328.4.9 kubectl全局選項 3348.5 本章小結 335第9章 Kubernetes運維實踐 3369.1 Pod詳解 3379.1.1 Pod配置詳解 3379.1.2 Pod生命周期 3409.1.3 共享Volume 3439.1.4 Pod配置管理 3439.1.5 Pod健康檢查 3469.1.6 Pod擴容和縮容 3489.2 Service詳解 3499.2.1 Service的定義 3499.2.2 Service的創建 3509.2.3 集群外部訪問 3519.2.4 Ingress負載網絡 3539.3 集群進階 3559.3.1 資源管理 3559.3.2 kubelet垃圾回收機制 3599.4 監控與日志 3599.4.1 原生監控:Heapster 3599.4.2 星火燎原:Prometheus 3609.4.3 王牌組合:EFK 3669.4.4 后起之秀:Filebeat 3749.5 本章小結 376