書籍信息,內容簡介,圖書目錄,
書籍信息
作譯者:七牛容器雲團隊
出版時間:2018-12千 字 數:888版次:01-01頁 數:592
開本:16開裝幀:I S B N :9787121349959
換版:
紙質書定價:¥148.0
內容簡介
本書主要講解如何在 Kubernetes 中部署分散式容器套用。本書開始部分概要介紹了 Docker 和Kubernetes 的由來和發展,然後通過在 Kubernetes 中部署一個應用程式,一點點增加功能,逐步加深我們對於Kubernetes架構的理解和操作的實踐。在本書的後面部分,也可以學習一些高階的主題,比如監控、調試及伸縮。Kubernetes是希臘文,意思是“舵手”,帶領我們安全地到達未知水域。Kubernetes這樣的容器編排系統,會幫助我們妥善地管理分散式套用的部署結構和線上流量,高效地組織容器和服務。Kubernetes 作為數據中心作業系統,在設計軟體系統時,能夠儘量降低在底層網路和硬體設施上的負擔。
圖書目錄
1 Kubernetes 介紹 .....................................................................1
1.1 Kubernetes 系統的需求 ...................................................................................2
1.1.1 從單體套用到微服務 ..........................................................................2
1.1.2 為應用程式提供一個一致的環境 ......................................................5
1.1.3 邁向持續交付 :DevOps 和無運維 ....................................................6
1.2 介紹容器技術 ..................................................................................................7
1.2.1 什麼是容器 ..........................................................................................7
1.2.2 Docker 容器平台介紹 ....................................................................... 11
1.2.3 rkt——一個 Docker 的替代方案 ......................................................14
1.3 Kubernetes 介紹 .............................................................................................15
1.3.1 初衷 ....................................................................................................15
1.3.2 深入淺出地了解 Kubernetes .............................................................15
1.3.3 Kubernetes 集群架構 .........................................................................17
1.3.4 在 Kubernetes 中運行套用 ................................................................18
1.3.5 使用 Kubernetes 的好處 ....................................................................20
1.4 本章小結 ........................................................................................................22
2 開始使用 Kubernetes 和 Docker ..............................................23
2.1 創建、運行及共享容器鏡像 ........................................................................23
2.1.1 安裝 Docker 並運行 Hello World 容器 .............................................24
2.1.2 創建一個簡單的 Node.js 套用 ..........................................................26
2.1.3 為鏡像創建 Dockerfile ......................................................................27
2.1.4 構建容器鏡像 ....................................................................................27
2.1.5 運行容器鏡像 ....................................................................................30
2.1.6 探索運行容器的內部 ........................................................................31
2.1.7 停止和刪除容器 ................................................................................32
2.1.8 向鏡像倉庫推送鏡像 ........................................................................33
2.2 配置 Kubernetes 集群 ....................................................................................34
2.2.1 用 Minikube 運行一個本地單節點 Kubernetes 集群 ......................34
2.2.2 使用 Google Kubernetes Engine 託管 Kubernetes 集群 ...................36
2.2.3 為 kubectl 配置別名和命令行補齊 ..................................................39
2.3 在 Kubernetes 上運行第一個套用 ................................................................40
2.3.1 部署 Node.js 套用 ..............................................................................40
2.3.2 訪問 Web 套用 ...................................................................................43
2.3.3 系統的邏輯部分 ................................................................................45
2.3.4 水平伸縮套用 ....................................................................................46
2.3.5 查看套用運行在哪個節點上 ............................................................49
2.3.6 介紹 Kubernetes dashboard ...............................................................50
2.4 本章小結 ........................................................................................................51
3 pod :運行於 Kubernetes 中的容器 ..........................................53
3.1 介紹 pod .........................................................................................................53
3.1.1 為何需要 pod .....................................................................................54
3.1.2 了解 pod .............................................................................................55
3.1.3 通過 pod 合理管理容器 ....................................................................56
3.2 以 YAML 或 JSON 描述檔案創建 pod ........................................................58
3.2.1 檢查現有 pod 的 YAML 描述檔案 ...................................................59
3.2.2 為 pod 創建一個簡單的 YAML 描述檔案 .......................................61
3.2.3 使用 kubectl create 來創建 pod .........................................................63
3.2.4 查看應用程式日誌 ............................................................................64
3.2.5 向 pod 傳送請求 ................................................................................65
3.3 使用標籤組織 pod .........................................................................................66
3.3.1 介紹標籤 ............................................................................................66
3.3.2 創建 pod 時指定標籤 ........................................................................67
3.3.3 修改現有 pod 的標籤 ........................................................................68
3.4 通過標籤選擇器列出 pod 子集 ....................................................................69
3.4.1 使用標籤選擇器列出 pod .................................................................69
3.4.2 在標籤選擇器中使用多個條件 ........................................................71
3.5 使用標籤和選擇器來約束 pod 調度 ............................................................71
3.5.1 使用標籤分類工作節點 ....................................................................72
3.5.2 將 pod 調度到特定節點 ....................................................................72
3.5.3 調度到一個特定節點 ........................................................................73
3.6 註解 pod .........................................................................................................73
3.6.1 查找對象的註解 ................................................................................74
3.6.2 添加和修改註解 ................................................................................74
3.7 使用命名空間對資源進行分組 ....................................................................75
3.7.1 了解對命名空間的需求 ....................................................................75
3.7.2 發現其他命名空間及其 pod .............................................................75
3.7.3 創建一個命名空間 ............................................................................76
3.7.4 管理其他命名空間中的對象 ............................................................77
3.7.5 命名空間提供的隔離 ........................................................................78
3.8 停止和移除 pod .............................................................................................78
3.8.1 按名稱刪除 pod .................................................................................78
3.8.2 使用標籤選擇器刪除 pod .................................................................79
3.8.3 通過刪除整個命名空間來刪除 pod .................................................80
3.8.4 刪除命名空間中的所有 pod,但保留命名空間 .............................80
3.8.5 刪除命名空間中的(幾乎)所有資源 ............................................80
3.9 本章小結 ........................................................................................................81
4 副本機制和其他控制器 :部署託管的 pod .................................83
4.1 保持 pod 健康 ................................................................................................84
4.1.1 介紹存活探針 ....................................................................................84
4.1.2 創建基於 HTTP 的存活探針 ............................................................85
4.1.3 使用存活探針 ....................................................................................86
4.1.4 配置存活探針的附加屬性 ................................................................87
4.1.5 創建有效的存活探針 ........................................................................88
4.2 了解 ReplicationController ............................................................................89
4.2.1 ReplicationController 的操作 ............................................................90
4.2.2 創建一個 ReplicationController ........................................................92
4.2.3 使用 ReplicationController ................................................................94
4.2.4 將 pod 移入或移出 ReplicationController 的作用域 .......................97
4.2.5 修改 pod 模板 ..................................................................................100
4.2.6 水平縮放 pod ...................................................................................101
4.2.7 刪除一個 ReplicationController ......................................................103
4.3 使用 ReplicaSet 而不是 ReplicationController ...........................................104
4.3.1 比較 ReplicaSet 和 ReplicationController .......................................104
4.3.2 定義 ReplicaSet ................................................................................105
4.3.3 創建和檢查 ReplicaSet ....................................................................106
4.3.4 使用 ReplicaSet 的更富表達力的標籤選擇器 ...............................106
4.3.5 ReplicaSet 小結 ................................................................................107
4.4 使用 DaemonSet 在每個節點上運行一個 pod ...........................................107
4.4.1 使用 DaemonSet 在每個節點上運行一個 pod ..............................108
4.4.2 使用 DaemonSet 只在特定的節點上運行 pod ..............................109
4.5 運行執行單個任務的 pod ........................................................................... 112
4.5.1 介紹 Job 資源 ................................................................................... 112
4.5.2 定義 Job 資源 ................................................................................... 113
4.5.3 看 Job 運行一個 pod ........................................................................ 114
4.5.4 在 Job 中運行多個 pod 實例 ........................................................... 114
4.5.5 限制 Job pod 完成任務的時間 ........................................................ 116
4.6 安排 Job 定期運行或在將來運行一次 ....................................................... 116
4.6.1 創建一個 CronJob ............................................................................ 116
4.6.2 了解計畫任務的運行方式 .............................................................. 118
4.7 本章小結 ...................................................................................................... 118
5 服務 :讓客戶端發現 pod 並與之通信 .....................................121
5.1 介紹服務 ......................................................................................................122
5.1.1 創建服務 ..........................................................................................123
5.1.2 服務發現 ..........................................................................................129
5.2 連線集群外部的服務 ..................................................................................132
5.2.1 介紹服務 endpoint ...........................................................................133
5.2.2 手動配置服務的 endpoint ...............................................................133
5.2.3 為外部服務創建別名 ......................................................................135
5.3 將服務暴露給外部客戶端 ..........................................................................136
5.3.1 使用 NodePort 類型的服務 .........................................................137
5.3.2 通過負載均衡器將服務暴露出來 ..................................................140
5.3.3 了解外部連線的特性 ......................................................................142
5.4 通過 Ingress 暴露服務 .................................................................................143
5.4.1 創建 Ingress 資源 .............................................................................145
5.4.2 通過 Ingress 訪問服務 .....................................................................146
5.4.3 通過相同的 Ingress 暴露多個服務 .................................................147
5.4.4 配置 Ingress 處理 TLS 傳輸 ...........................................................149
5.5 pod 就緒後發出信號 ...................................................................................150
5.5.1 介紹就緒探針 ..................................................................................151
5.5.2 向 pod 添加就緒探針 ......................................................................152
5.5.3 了解就緒探針的實際作用 ..............................................................154
5.6 使用 headless 服務來發現獨立的 pod ........................................................155
5.6.1 創建 headless 服務 ...........................................................................156
5.6.2 通過 DNS 發現 pod .........................................................................156
5.6.3 發現所有的 pod——包括未就緒的 pod.........................................157
5.7 排除服務故障 ..............................................................................................158
5.8 本章小結 ......................................................................................................159
6 卷 :將磁碟掛載到容器 .........................................................161
6.1 介紹卷 ..........................................................................................................162
6.1.1 卷的套用示例 .................................................................................162
6.1.2 介紹可用的卷類型 ..........................................................................164
6.2 通過卷在容器之間共享數據 ......................................................................165
6.2.1 使用 emptyDir 卷 .............................................................................165
6.2.2 使用 Git 倉庫作為存儲卷 ...............................................................168
6.3 訪問工作節點檔案系統上的檔案 ..............................................................171
6.3.1 介紹 hostPath 卷 ..............................................................................171
6.3.2 檢查使用 hostPath 卷的系統 pod ...................................................172
6.4 使用持久化存儲 ..........................................................................................173
6.4.1 使用 GCE 持久磁碟作為 pod 存儲卷 ............................................174
6.4.2 通過底層持久化存儲使用其他類型的卷 ......................................177