基本知識有了,接下來我們透過 Hands-on Lab 來體驗 kubernetes 吧!
我們今天是透過在 Kubernetes 集群上部署一個基本的 Web 應用,並使用 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
編寫一個 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
建立一個服務來暴露 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 的狀態:
kubectl get deployments
檢查 Pods 的狀態:
kubectl get pods
檢查服務的狀態:
kubectl get services
查找分配給服務的 NodePort,並通過瀏覽器訪問:
minikube service webapp-service --url
此時輸入該網址就可以看到我們建立的預設網頁了
將 Deployment 擴展到 3 個副本:
kubectl scale deployment webapp-deployment --replicas=3
驗證擴展情況:
kubectl get pods
刪除 Deployment 和服務:
kubectl delete -f deployment.yaml
kubectl delete -f service.yaml