※ 思考如何方便有效管理多個Container:
- 批量部署:在多台主機上同時部署多個容器,以提高擴展性和運行效率。
- 水平擴展:透過增加 多個相同的服務實例 來應對更大的流量或負載,而使用者會感覺這些實例是一個單一服務,這通常是透過負載均衡來實現的。
- 版本管理:讓新版本的應用程式順利上線,避免影響使用者體驗。
- 設定管理:管理設定檔去做到同一個設定,可以給不同的容器使用。不同的容器有不同的設定檔。
- 自我修復:系統在遇到錯誤或故障時,能夠 自動偵測並恢復正常運作,而無需人工介入。
- 負載均衡:將網路流量或請求分配到多台伺服器或容器,以確保系統穩定並提高效能。
- … 還有一大堆
※ Kubernetes介紹:
由 Google 開發的開源容器管理系統
•官方文檔: https://kubernetes.io/
• 以「集群 (Cluster)」為單位。• 從硬體層面上,集群由多台主機組成。
• 抽象層面上,由多個不同類型的「元件」組成。
• 每個「元件」都通過 yaml 檔來進行設定。
※ Nodes:一個集群中的硬體單位
- 分為 Master Node 和 Worker Node。
- 一個 Node 是硬體層面上的一台真實主機,也可以是虛擬機或雲端主機。
- Master Node 負責管理集群和接受使用者的命令。
- Master Node 也負責 Worker Nodes 之間的通信。
- Worker Nodes 根據 Master Node 的調度來運行服務。
※ 元件:Pod
- 一個 Pod 是 Kubernetes 中實際執行的最小單位。
- 一個 Pod 可以包含多個 Container,且彼此相通。
- Pod的yaml設定檔:

內容解說:
1. apiVersion: v1
:在第一行宣告使用的是 Kubernetes API 的哪個版本。
2. kind: Pod
:設定檔是什麼類型的元件。定義的是 Pod 元件。
3. metadata
:關於元件的相關設定。name: nginx
:指定 Pod 的名稱為 nginx
,這樣 Kubernetes 可以識別該 Pod。
4. spec
:真正描述元件的相關設定。定義了 Pod 的具體行為,包括容器的配置。
containers
:是一個陣列。列出該 Pod 內的所有容器。name: nginx
:容器的名稱為nginx
。image: nginx:1.14.2
:該容器使用nginx:1.14.2
映像(Docker Image)。ports
:可以指定對外開放的port有哪些?
※ 元件: Deployment
- 一個Deployment相當於預先設定好的「一組」 Pods,「一組」就是很多個內容相同的Pod。
- 一個 Deployment 會自動啟動並管理多個相同的 Pods。
- 在服務升級版本時,Deployment 可以確保服務不被中斷。
- Deployment的yaml設定檔:

※ 元件: Service
內部Pods與外部通信方式,分成三種型態:
- ClusterIp:讓集群內的其他服務可以彼此互相訪問。
- NodePort:在所有 Node 打開一個 Port,這個 Port 會導向設定的 Pods。
- LoadBalancer:負載均衡,需要搭配雲端平台提供的服務來使用。
※ 元件 : Ingress
用來管理發往內部的網絡流量的路由規則。
