iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
Kubernetes

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

[Day 15] K8S Lab - 部署一個簡單的 Web 應用

  • 分享至 

  • xImage
  •  

基本知識有了,接下來我們透過 Hands-on Lab 來體驗 kubernetes 吧!

我們今天是透過在 Kubernetes 集群上部署一個基本的 Web 應用,並使用 kubectl 命令進行管理。

這篇文章我們可以:

  • 了解 Kubernetes 基本對象(Deployment、Service)。
  • 使用 kubectl 命令進行應用部署和管理。
  • 暴露服務並進行訪問。

系統是使用 Ubuntu 22.04 LST

如果要安裝 Minikube,請使用以下指令安裝

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb

設定集群

啟動本地 Kubernetes 集群:

minikube start

確保 kubectl 配置為使用我們的集群:

kubectl config use-context minikube

建立 Deployment

編寫一個 YAML 文件來部署 Web 應用。

我們需要建立一個名為 deployment.yaml 的文件,內容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: webapp
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: nginx:latest
        ports:
        - containerPort: 80

配置文件定義了一個 Kubernetes Deployment,名為 webapp-deployment,該 Deployment 會建立兩個副本的 Nginx 容器。

它使用 app: webapp 作為選擇標籤,並指定容器的端口為 80。

應用 Deployment:

kubectl apply -f deployment.yaml

暴露 Deployment

建立一個服務來暴露 Web 應用。

建立一個名為 service.yaml 的文件,內容如下:

apiVersion: v1
kind: Service
metadata:
  name: webapp-service
spec:
  type: NodePort
  selector:
    app: webapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

配置文件定義了一個 Kubernetes Service,名為 webapp-service,其類型為 NodePort。

這個 Service 會選擇具有 app: webapp 標籤的 Pods,並將外部的 80 端口映射到內部容器的 80 端口,以提供對 Web 應用的訪問。

應用服務:

kubectl apply -f service.yaml

驗證 Deployment 和 Service

檢查 Deployment 的狀態:

kubectl get deployments

檢查 Pods 的狀態:

kubectl get pods

檢查服務的狀態:

kubectl get services

查找分配給服務的 NodePort,並通過瀏覽器訪問:

minikube service webapp-service --url

此時輸入該網址就可以看到我們建立的預設網頁了

https://ithelp.ithome.com.tw/upload/images/20240815/20152821Zxey16vx6l.png

擴展應用

將 Deployment 擴展到 3 個副本:

kubectl scale deployment webapp-deployment --replicas=3

驗證擴展情況:

kubectl get pods

https://ithelp.ithome.com.tw/upload/images/20240815/20152821EpvE8uCuiI.png

清理

刪除 Deployment 和服務:

kubectl delete -f deployment.yaml
kubectl delete -f service.yaml

上一篇
[Day 14] etcd
下一篇
[Day 16] K8S Lab - 客製化 Web 應用
系列文
關於新手會想知道Kubernetes的幾件事情30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言