iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Kubernetes

關於新手會想知道Kubernetes的幾件事情系列 第 16

[Day 16] K8S Lab - 客製化 Web 應用

  • 分享至 

  • xImage
  •  

在 Kubernetes 集群中,我們可以部署一個自定義的 Web 應用,並進行擴展。

本文將介紹如何使用 index.html 文件來客製化 Web 應用,並演示如何擴展該應用以應對不同的需求,包括如何連接到擴展後的 URL。

準備客製化的 Web 應用

首先,建立一個包含 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>

https://ithelp.ithome.com.tw/upload/images/20240816/201528216PnSbABT0h.png

建立一個 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

部署自定義 Web 應用

建立一個名為 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

暴露 Web 應用

建立一個名為 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 應用

要擴展 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 應用

當 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

上一篇
[Day 15] K8S Lab - 部署一個簡單的 Web 應用
下一篇
[Day 17] K8S Lab - 管理 Web-App
系列文
關於新手會想知道Kubernetes的幾件事情30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言