在 Kubernetes 集群中,我們可以部署一個自定義的 Web 應用,並進行擴展。
本文將介紹如何使用 index.html
文件來客製化 Web 應用,並演示如何擴展該應用以應對不同的需求,包括如何連接到擴展後的 URL。
首先,建立一個包含 index.html
的簡單 Web 應用。假設我們使用 Nginx 作為 Web 伺服器,我們需要建立一個 Docker 映像來承載我們的自定義內容。
建立一個新的目錄,並在其中放置 index.html
文件。以下是 index.html
的範例內容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Custom Web App</title>
</head>
<body>
<h1>Welcome to My Custom Web App!</h1>
<p>This is a custom web page served by Nginx on Kubernetes.</p>
</body>
</html>
建立一個 Dockerfile
來構建自定義映像:
FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html
使用以下命令構建 Docker 映像:
docker build -t custom-web-app .
將 Docker 映像推送到容器登錄庫(例如 Docker Hub):
docker tag custom-web-app your-dockerhub-username/custom-web-app
docker push your-dockerhub-username/custom-web-app
建立一個名為 custom-web-app-deployment.yaml
的 Kubernetes Deployment 文件,內容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: custom-web-app-deployment
spec:
replicas: 2
selector:
matchLabels:
app: custom-web-app
template:
metadata:
labels:
app: custom-web-app
spec:
containers:
- name: custom-web-app
image: your-dockerhub-username/custom-web-app
ports:
- containerPort: 80
應用 Deployment 文件:
kubectl apply -f custom-web-app-deployment.yaml
建立一個名為 custom-web-app-service.yaml
的 Kubernetes Service 文件,內容如下:
apiVersion: v1
kind: Service
metadata:
name: custom-web-app-service
spec:
type: NodePort
selector:
app: custom-web-app
ports:
- protocol: TCP
port: 80
targetPort: 80
應用 Service 文件:
kubectl apply -f custom-web-app-service.yaml
要擴展 Web 應用,可以簡單地調整 Deployment 中的副本數量。
編輯 custom-web-app-deployment.yaml
文件,將 replicas
屬性更改為所需的數量,例如:
spec:
replicas: 3
更新 Deployment:
kubectl apply -f custom-web-app-deployment.yaml
驗證 Pods 是否成功擴展:
kubectl get pods
當 Web 應用擴展到多個副本時,Kubernetes 的 Service 會將流量分發到所有副本。
要訪問這些副本,你需要通過 Service 的 NodePort 進行訪問。執行以下命令來獲取 Service 的 URL:
minikube service custom-web-app-service --url
使用這個 URL,你將能夠訪問服務,Kubernetes 會自動將請求分配到不同的副本上。
如果需要查看每個副本的 IP 地址和端口,可以使用以下命令:
kubectl get endpoints custom-web-app-service
這會顯示每個副本的 IP 和端口,但通常 Service 的 URL 就足夠用了。
當不再需要 Web 應用時,可以刪除 Deployment 和服務:
kubectl delete -f custom-web-app-deployment.yaml
kubectl delete -f custom-web-app-service.yaml