容器已經改變了我們部署、擴展和管理應用程式的方式,通過將程式碼和相依項目打包在一個標準化的單元中,使其能夠在任何環境中一致運行。當在雲端環境中使用時,容器提供:
- 可攜性 跨開發、測試和生產環境。
- 擴展性 可快速適應流量和需求。
- 效率 與傳統虛擬機相比大幅減少開銷。
在本教程中,我們將全面介紹雲端容器化應用程式的設定,包括:
- 容器的基本知識以及為何它們很適合雲端。
- 建立一個 Docker 化應用程式。
- 部署容器到雲端供應商(以 Google Cloud Platform 為例)。
- 在雲端擴展和管理您的容器。
容器基礎知識:容器如何融入雲端工作流程
容器 封裝了運行應用程式所需的所有庫和相依項目。與傳統虛擬機不同,每個虛擬機都有一個作業系統,容器共享主機作業系統,因此它們輕巧且高效。
為何選擇雲端容器?
- 快速啟動時間 意味著更快速地擴展以應對變化的流量。
- 環境一致性確保程式碼在從開發人員的筆記本電腦到生產環境的行為一致。
- 資源效率可在相同基礎設施上實現高密度部署。
雲端容器化的核心組件
- 容器引擎:管理和運行容器(例如 Docker、containerd)。
- Orchestration:確保應用程式的可靠性、擴展性和負載平衡(例如 Kubernetes、ECS)。
- 註冊表:存儲容器映像以便在不同環境中訪問(例如 Docker Hub、GCR)。
建立 Docker 化應用程式
我們將從將一個簡單的 Node.js 應用程式容器化開始。
步驟 1:建立應用程式
1. 在專案文件夾中初始化一個 Node.js 專案:
mkdir cloud-container-app && cd cloud-container-app
npm init -y
2. 建立一個基本的伺服器檔案,app.js
:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Cloud Container!');
});
app.listen(3000, () => {
console.log('App running on port 3000');
});
3. 將 Express 加入專案:
npm install express
步驟 2:建立一個 Dockerfile
這個 Dockerfile 指定了如何將應用程式打包成 Docker 容器。
# Use the Node.js image as a base
FROM node:14
# Set working directory
WORKDIR /app
# Copy files and install dependencies
COPY . .
RUN npm install
# Expose the app’s port
EXPOSE 3000
# Start the application
CMD ["node", "app.js"]
步驟 3:在本地建立並測試 Docker 映像
1. 建立 Docker 映像:
docker build -t cloud-container-app .
2. 在本地運行容器:
docker run -p 3000:3000 cloud-container-app
3. 在瀏覽器中訪問 `http://localhost:3000`。您應該會看到 “你好,雲容器!” 的顯示。
將容器部署到 Google Cloud 平台(GCP)
在本節中,我們將將容器映像推送到 Google 容器註冊表(GCR),並部署到 Google Kubernetes 引擎(GKE)。
步驟 1:設置 GCP 專案
1. 創建一個 GCP 專案。轉到 [Google Cloud 控制台](https://console.cloud.google.com)並創建一個新專案。
2. 為您的專案啟用 Kubernetes 引擎和容器註冊表 API。
步驟 2:將映像推送到 Google 容器註冊表
1. 為 Google Cloud 標記 Docker 映像:
docker tag cloud-container-app gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
2. 將映像推送到 GCR:
docker push gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
步驟 3:創建 Kubernetes 集群
1. 初始化 GKE 集群:
gcloud container clusters create cloud-container-cluster --num-nodes=2
2. 配置 kubectl
以連接到您的新集群:
gcloud container clusters get-credentials cloud-container-cluster
步驟 4:將容器化應用部署到 GKE
1. 創建一個 k8s-deployment.yaml
文件來定義部署和服務:
apiVersion apps/v1
kind Deployment
metadata
name cloud-container-app
spec
replicas2
selector
matchLabels
app cloud-container-app
template
metadata
labels
app cloud-container-app
spec
containers
name cloud-container-app
image gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
ports
containerPort3000
---
apiVersion v1
kind Service
metadata
name cloud-container-service
spec
type LoadBalancer
selector
app cloud-container-app
ports
protocol TCP
port80
targetPort3000
2. 將應用部署到 GKE:
kubectl apply -f k8s-deployment.yaml
3. 獲取外部 IP 以訪問應用:
kubectl get services
在 GKE 中調整和管理容器
步驟 1:調整部署的規模
使用以下命令來調整副本數量(例如,以處理更高流量):
kubectl scale deployment cloud-container-app --replicas=5
GKE 將自動通過添加副本和分發負載來調整應用程序。
步驟 2:監控和管理日誌
1. 使用以下命令查看 Kubernetes 中特定 pod 的日誌:
kubectl logs <POD_NAME>
2. 啟用 GKE 儀表板以監控 pod 狀態和資源使用情況,並以視覺方式管理部署。
結論:利用容器進行可擴展的雲端部署
本教程涵蓋:
- 使用 Docker 對 Node.js 應用程序進行容器化。
- 部署到 Google Kubernetes Engine(GKE)以進行可擴展的托管。
- 在雲端有效地管理和調整容器。
在雲端使用容器,您的應用程序將獲得可擴展性、可移植性和效率 — 確保它們能夠應對需求、快速適應並在各種環境中保持一致。
Source:
https://dzone.com/articles/a-step-by-step-guide-to-deploying-containers-in-the-cloud